home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 1998 November / IRIX 6.5.2 Base Documentation November 1998.img / usr / share / catman / u_man / cat1 / perlfunc.z / perlfunc
Text File  |  1998-10-30  |  216KB  |  5,281 lines

  1.  
  2.  
  3.  
  4. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      perlfunc - Perl builtin functions
  10.  
  11. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  12.      The functions in this section can serve as terms in an expression.  They
  13.      fall into two major categories: list operators and named unary operators.
  14.      These differ in their precedence relationship with a following comma.
  15.      (See the precedence table in the _p_e_r_l_o_p manpage.)  List operators take
  16.      more than one argument, while unary operators can never take more than
  17.      one argument.  Thus, a comma terminates the argument of a unary operator,
  18.      but merely separates the arguments of a list operator.  A unary operator
  19.      generally provides a scalar context to its argument, while a list
  20.      operator may provide either scalar and list contexts for its arguments.
  21.      If it does both, the scalar arguments will be first, and the list
  22.      argument will follow.  (Note that there can ever be only one list
  23.      argument.)  For instance, _s_p_l_i_c_e() has three scalar arguments followed by
  24.      a list.
  25.  
  26.      In the syntax descriptions that follow, list operators that expect a list
  27.      (and provide list context for the elements of the list) are shown with
  28.      LIST as an argument.  Such a list may consist of any combination of
  29.      scalar arguments or list values; the list values will be included in the
  30.      list as if each individual element were interpolated at that point in the
  31.      list, forming a longer single-dimensional list value.  Elements of the
  32.      LIST should be separated by commas.
  33.  
  34.      Any function in the list below may be used either with or without
  35.      parentheses around its arguments.  (The syntax descriptions omit the
  36.      parentheses.)  If you use the parentheses, the simple (but occasionally
  37.      surprising) rule is this: It _L_O_O_K_S like a function, therefore it _I_S a
  38.      function, and precedence doesn't matter.  Otherwise it's a list operator
  39.      or unary operator, and precedence does matter.  And whitespace between
  40.      the function and left parenthesis doesn't count--so you need to be
  41.      careful sometimes:
  42.  
  43.          print 1+2+4;        # Prints 7.
  44.          print(1+2) + 4;     # Prints 3.
  45.          print (1+2)+4;      # Also prints 3!
  46.          print +(1+2)+4;     # Prints 7.
  47.          print ((1+2)+4);    # Prints 7.
  48.  
  49.      If you run Perl with the ----wwww switch it can warn you about this.  For
  50.      example, the third line above produces:
  51.  
  52.          print (...) interpreted as function at - line 1.
  53.          Useless use of integer addition in void context at - line 1.
  54.  
  55.      For functions that can be used in either a scalar or list context,
  56.      nonabortive failure is generally indicated in a scalar context by
  57.      returning the undefined value, and in a list context by returning the
  58.      null list.
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  71.  
  72.  
  73.  
  74.      Remember the following rule:
  75.  
  76.      _T_H_E_R_E _I_S _N_O _G_E_N_E_R_A_L _R_U_L_E _F_O_R _C_O_N_V_E_R_T_I_N_G _A _L_I_S_T _I_N_T_O _A _S_C_A_L_A_R!
  77.  
  78.      Each operator and function decides which sort of value it would be most
  79.      appropriate to return in a scalar context.  Some operators return the
  80.      length of the list that would have been returned in a list context.  Some
  81.      operators return the first value in the list.  Some operators return the
  82.      last value in the list.  Some operators return a count of successful
  83.      operations.  In general, they do what you want, unless you want
  84.      consistency.
  85.  
  86.      PPPPeeeerrrrllll FFFFuuuunnnnccccttttiiiioooonnnnssss bbbbyyyy CCCCaaaatttteeeeggggoooorrrryyyy
  87.  
  88.      Here are Perl's functions (including things that look like functions,
  89.      like some of the keywords and named operators) arranged by category.
  90.      Some functions appear in more than one place.
  91.  
  92.      Functions for SCALARs or strings
  93.           chomp, chop, chr, crypt, hex, index, lc, lcfirst, length, oct, ord,
  94.           pack, q/STRING/, qq/STRING/, reverse, rindex, sprintf, substr,
  95.           tr///, uc, ucfirst, y///
  96.  
  97.      Regular expressions and pattern matching
  98.           m//, pos, quotemeta, s///, split, study
  99.  
  100.      Numeric functions
  101.           abs, atan2, cos, exp, hex, int, log, oct, rand, sin, sqrt, srand
  102.  
  103.      Functions for real @ARRAYs
  104.           pop, push, shift, splice, unshift
  105.  
  106.      Functions for list data
  107.           grep, join, map, qw/STRING/, reverse, sort, unpack
  108.  
  109.      Functions for real %HASHes
  110.           delete, each, exists, keys, values
  111.  
  112.      Input and output functions
  113.           binmode, close, closedir, dbmclose, dbmopen, die, eof, fileno,
  114.           flock, format, getc, print, printf, read, readdir, rewinddir, seek,
  115.           seekdir, select, syscall, sysread, sysseek, syswrite, tell, telldir,
  116.           truncate, warn, write
  117.  
  118.      Functions for fixed length data or records
  119.           pack, read, syscall, sysread, syswrite, unpack, vec
  120.  
  121.      Functions for filehandles, files, or directories
  122.           -_X, chdir, chmod, chown, chroot, fcntl, glob, ioctl, link, lstat,
  123.           mkdir, open, opendir, readlink, rename, rmdir, stat, symlink, umask,
  124.           unlink, utime
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  137.  
  138.  
  139.  
  140.      Keywords related to the control flow of your perl program
  141.           caller, continue, die, do, dump, eval, exit, goto, last, next, redo,
  142.           return, sub, wantarray
  143.  
  144.      Keywords related to scoping
  145.           caller, import, local, my, package, use
  146.  
  147.      Miscellaneous functions
  148.           defined, dump, eval, formline, local, my, reset, scalar, undef,
  149.           wantarray
  150.  
  151.      Functions for processes and process groups
  152.           alarm, exec, fork, getpgrp, getppid, getpriority, kill, pipe,
  153.           qx/STRING/, setpgrp, setpriority, sleep, system, times, wait,
  154.           waitpid
  155.  
  156.      Keywords related to perl modules
  157.           do, import, no, package, require, use
  158.  
  159.      Keywords related to classes and object-orientedness
  160.           bless, dbmclose, dbmopen, package, ref, tie, tied, untie, use
  161.  
  162.      Low-level socket functions
  163.           accept, bind, connect, getpeername, getsockname, getsockopt, listen,
  164.           recv, send, setsockopt, shutdown, socket, socketpair
  165.  
  166.      System V interprocess communication functions
  167.           msgctl, msgget, msgrcv, msgsnd, semctl, semget, semop, shmctl,
  168.           shmget, shmread, shmwrite
  169.  
  170.      Fetching user and group info
  171.           endgrent, endhostent, endnetent, endpwent, getgrent, getgrgid,
  172.           getgrnam, getlogin, getpwent, getpwnam, getpwuid, setgrent, setpwent
  173.  
  174.      Fetching network info
  175.           endprotoent, endservent, gethostbyaddr, gethostbyname, gethostent,
  176.           getnetbyaddr, getnetbyname, getnetent, getprotobyname,
  177.           getprotobynumber, getprotoent, getservbyname, getservbyport,
  178.           getservent, sethostent, setnetent, setprotoent, setservent
  179.  
  180.      Time-related functions
  181.           gmtime, localtime, time, times
  182.  
  183.      Functions new in perl5
  184.           abs, bless, chomp, chr, exists, formline, glob, import, lc, lcfirst,
  185.           map, my, no, prototype, qx, qw, readline, readpipe, ref, sub*,
  186.           sysopen, tie, tied, uc, ucfirst, untie, use
  187.  
  188.           * - sub was a keyword in perl4, but in perl5 it is an operator which
  189.           can be used in expressions.
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  203.  
  204.  
  205.  
  206.      Functions obsoleted in perl5
  207.           dbmclose, dbmopen
  208.  
  209.      AAAAllllpppphhhhaaaabbbbeeeettttiiiiccccaaaallll LLLLiiiissssttttiiiinnnngggg ooooffff PPPPeeeerrrrllll FFFFuuuunnnnccccttttiiiioooonnnnssss
  210.  
  211.      -X FILEHANDLE
  212.  
  213.      -X EXPR
  214.  
  215.      -X      A file test, where X is one of the letters listed below.  This
  216.              unary operator takes one argument, either a filename or a
  217.              filehandle, and tests the associated file to see if something is
  218.              true about it.  If the argument is omitted, tests $_, except for
  219.              -t, which tests STDIN.  Unless otherwise documented, it returns 1
  220.              for TRUE and '' for FALSE, or the undefined value if the file
  221.              doesn't exist.  Despite the funny names, precedence is the same
  222.              as any other named unary operator, and the argument may be
  223.              parenthesized like any other unary operator.  The operator may be
  224.              any of:
  225.  
  226.                  -r  File is readable by effective uid/gid.
  227.                  -w  File is writable by effective uid/gid.
  228.                  -x  File is executable by effective uid/gid.
  229.                  -o  File is owned by effective uid.
  230.  
  231.                  -R  File is readable by real uid/gid.
  232.                  -W  File is writable by real uid/gid.
  233.                  -X  File is executable by real uid/gid.
  234.                  -O  File is owned by real uid.
  235.  
  236.                  -e  File exists.
  237.                  -z  File has zero size.
  238.                  -s  File has nonzero size (returns size).
  239.  
  240.                  -f  File is a plain file.
  241.                  -d  File is a directory.
  242.                  -l  File is a symbolic link.
  243.                  -p  File is a named pipe (FIFO).
  244.                  -S  File is a socket.
  245.                  -b  File is a block special file.
  246.                  -c  File is a character special file.
  247.                  -t  Filehandle is opened to a tty.
  248.  
  249.                  -u  File has setuid bit set.
  250.                  -g  File has setgid bit set.
  251.                  -k  File has sticky bit set.
  252.  
  253.                  -T  File is a text file.
  254.                  -B  File is a binary file (opposite of -T).
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  269.  
  270.  
  271.  
  272.                  -M  Age of file in days when script started.
  273.                  -A  Same for access time.
  274.                  -C  Same for inode change time.
  275.  
  276.              The interpretation of the file permission operators -r, -R, -w,
  277.              -W, -x, and -X is based solely on the mode of the file and the
  278.              uids and gids of the user.  There may be other reasons you can't
  279.              actually read, write or execute the file.  Also note that, for
  280.              the superuser, -r, -R, -w, and -W always return 1, and -x and -X
  281.              return 1 if any execute bit is set in the mode.  Scripts run by
  282.              the superuser may thus need to do a _s_t_a_t() to determine the
  283.              actual mode of the file, or temporarily set the uid to something
  284.              else.
  285.  
  286.              Example:
  287.  
  288.                  while (<>) {
  289.                      chop;
  290.                      next unless -f $_;      # ignore specials
  291.                      ...
  292.                  }
  293.  
  294.              Note that -s/a/b/ does not do a negated substitution.  Saying
  295.              -exp($foo) still works as expected, however--only single letters
  296.              following a minus are interpreted as file tests.
  297.  
  298.              The -T and -B switches work as follows.  The first block or so of
  299.              the file is examined for odd characters such as strange control
  300.              codes or characters with the high bit set.  If too many odd
  301.              characters (>30%) are found, it's a -B file, otherwise it's a -T
  302.              file.  Also, any file containing null in the first block is
  303.              considered a binary file.  If -T or -B is used on a filehandle,
  304.              the current stdio buffer is examined rather than the first block.
  305.              Both -T and -B return TRUE on a null file, or a file at EOF when
  306.              testing a filehandle.  Because you have to read a file to do the
  307.              -T test, on most occasions you want to use a -f against the file
  308.              first, as in next unless -f $file && -T $file.
  309.  
  310.              If any of the file tests (or either the _s_t_a_t() or _l_s_t_a_t()
  311.              operators) are given the special filehandle consisting of a
  312.              solitary underline, then the stat structure of the previous file
  313.              test (or stat operator) is used, saving a system call.  (This
  314.              doesn't work with -t, and you need to remember that _l_s_t_a_t() and
  315.              -l will leave values in the stat structure for the symbolic link,
  316.              not the real file.)  Example:
  317.  
  318.                  print "Can do.\n" if -r $a || -w _ || -x _;
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  335.  
  336.  
  337.  
  338.                  stat($filename);
  339.                  print "Readable\n" if -r _;
  340.                  print "Writable\n" if -w _;
  341.                  print "Executable\n" if -x _;
  342.                  print "Setuid\n" if -u _;
  343.                  print "Setgid\n" if -g _;
  344.                  print "Sticky\n" if -k _;
  345.                  print "Text\n" if -T _;
  346.                  print "Binary\n" if -B _;
  347.  
  348.  
  349.      abs VALUE
  350.  
  351.      abs     Returns the absolute value of its argument.  If VALUE is omitted,
  352.              uses $_.
  353.  
  354.      accept NEWSOCKET,GENERICSOCKET
  355.              Accepts an incoming socket connect, just as the _a_c_c_e_p_t(2) system
  356.              call does.  Returns the packed address if it succeeded, FALSE
  357.              otherwise.  See example in the section on _S_o_c_k_e_t_s: _C_l_i_e_n_t/_S_e_r_v_e_r
  358.              _C_o_m_m_u_n_i_c_a_t_i_o_n in the _p_e_r_l_i_p_c manpage.
  359.  
  360.      alarm SECONDS
  361.  
  362.      alarm   Arranges to have a SIGALRM delivered to this process after the
  363.              specified number of seconds have elapsed.  If SECONDS is not
  364.              specified, the value stored in $_ is used. (On some machines,
  365.              unfortunately, the elapsed time may be up to one second less than
  366.              you specified because of how seconds are counted.)  Only one
  367.              timer may be counting at once.  Each call disables the previous
  368.              timer, and an argument of 0 may be supplied to cancel the
  369.              previous timer without starting a new one.  The returned value is
  370.              the amount of time remaining on the previous timer.
  371.  
  372.              For delays of finer granularity than one second, you may use
  373.              Perl's _s_y_s_c_a_l_l() interface to access _s_e_t_i_t_i_m_e_r(2) if your system
  374.              supports it, or else see the select() entry elsewhere in this
  375.              document .  It is usually a mistake to intermix _a_l_a_r_m() and
  376.              _s_l_e_e_p() calls.
  377.  
  378.              If you want to use _a_l_a_r_m() to time out a system call you need to
  379.              use an eval/die pair.  You can't rely on the alarm causing the
  380.              system call to fail with $! set to EINTR because Perl sets up
  381.              signal handlers to restart system calls on some systems.  Using
  382.              eval/die always works.
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.                                                                         PPPPaaaaggggeeee 6666
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  401.  
  402.  
  403.  
  404.                  eval {
  405.                      local $SIG{ALRM} = sub { die "alarm\n" };       # NB \n required
  406.                      alarm $timeout;
  407.                      $nread = sysread SOCKET, $buffer, $size;
  408.                      alarm 0;
  409.                  };
  410.                  die if $@ && $@ ne "alarm\n";       # propagate errors
  411.                  if ($@) {
  412.                      # timed out
  413.                  }
  414.                  else {
  415.                      # didn't
  416.                  }
  417.  
  418.  
  419.      atan2 Y,X
  420.              Returns the arctangent of Y/X in the range -pi to pi.
  421.  
  422.              For the tangent operation, you may use the _P_O_S_I_X::_t_a_n() function,
  423.              or use the familiar relation:
  424.  
  425.                  sub tan { sin($_[0]) / cos($_[0])  }
  426.  
  427.  
  428.      bind SOCKET,NAME
  429.              Binds a network address to a socket, just as the bind system call
  430.              does.  Returns TRUE if it succeeded, FALSE otherwise.  NAME
  431.              should be a packed address of the appropriate type for the
  432.              socket.  See the examples in the section on _S_o_c_k_e_t_s:
  433.              _C_l_i_e_n_t/_S_e_r_v_e_r _C_o_m_m_u_n_i_c_a_t_i_o_n in the _p_e_r_l_i_p_c manpage.
  434.  
  435.      binmode FILEHANDLE
  436.              Arranges for the file to be read or written in "binary" mode in
  437.              operating systems that distinguish between binary and text files.
  438.              Files that are not in binary mode have CR LF sequences translated
  439.              to LF on input and LF translated to CR LF on output.  Binmode has
  440.              no effect under Unix; in MS-DOS and similarly archaic systems, it
  441.              may be imperative--otherwise your MS-DOS-damaged C library may
  442.              mangle your file.  The key distinction between systems that need
  443.              binmode and those that don't is their text file formats.  Systems
  444.              like Unix and Plan9 that delimit lines with a single character,
  445.              and that encode that character in C as '\n', do not need binmode.
  446.              The rest need it.  If FILEHANDLE is an expression, the value is
  447.              taken as the name of the filehandle.
  448.  
  449.      bless REF,CLASSNAME
  450.  
  451.      bless REF
  452.              This function tells the thingy referenced by REF that it is now
  453.              an object in the CLASSNAME package--or the current package if no
  454.              CLASSNAME is specified, which is often the case.  It returns the
  455.              reference for convenience, because a _b_l_e_s_s() is often the last
  456.  
  457.  
  458.  
  459.                                                                         PPPPaaaaggggeeee 7777
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  467.  
  468.  
  469.  
  470.              thing in a constructor.  Always use the two-argument version if
  471.              the function doing the blessing might be inherited by a derived
  472.              class.  See the _p_e_r_l_o_b_j manpage for more about the blessing (and
  473.              blessings) of objects.
  474.  
  475.      caller EXPR
  476.  
  477.      caller  Returns the context of the current subroutine call.  In a scalar
  478.              context, returns the caller's package name if there is a caller,
  479.              that is, if we're in a subroutine or _e_v_a_l() or _r_e_q_u_i_r_e(), and the
  480.              undefined value otherwise.  In a list context, returns
  481.  
  482.                  ($package, $filename, $line) = caller;
  483.  
  484.              With EXPR, it returns some extra information that the debugger
  485.              uses to print a stack trace.  The value of EXPR indicates how
  486.              many call frames to go back before the current one.
  487.  
  488.                  ($package, $filename, $line, $subroutine,
  489.                   $hasargs, $wantarray, $evaltext, $is_require) = caller($i);
  490.  
  491.              Here $subroutine may be "(eval)" if the frame is not a subroutine
  492.              call, but an eval.  In such a case additional elements $evaltext
  493.              and $is_require are set: $is_require is true if the frame is
  494.              created by a require or use statement, $evaltext contains the
  495.              text of the eval EXPR statement.  In particular, for a eval BLOCK
  496.              statement, $filename is "(eval)", but $evaltext is undefined.
  497.              (Note also that each use statement creates a require frame inside
  498.              an eval EXPR) frame.
  499.  
  500.              Furthermore, when called from within the DB package, caller
  501.              returns more detailed information: it sets the list variable
  502.              @DB::args to be the arguments with which the subroutine was
  503.              invoked.
  504.  
  505.      chdir EXPR
  506.              Changes the working directory to EXPR, if possible.  If EXPR is
  507.              omitted, changes to home directory.  Returns TRUE upon success,
  508.              FALSE otherwise.  See example under _d_i_e().
  509.  
  510.      chmod LIST
  511.              Changes the permissions of a list of files.  The first element of
  512.              the list must be the numerical mode, which should probably be an
  513.              octal number, and which definitely should _n_o_t a string of octal
  514.              digits:  0644 is okay, '0644' is not.  Returns the number of
  515.              files successfully changed.  See also the oct entry elsewhere in
  516.              this document if all you have is a string.
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.                                                                         PPPPaaaaggggeeee 8888
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  533.  
  534.  
  535.  
  536.                  $cnt = chmod 0755, 'foo', 'bar';
  537.                  chmod 0755, @executables;
  538.                  $mode = '0644'; chmod $mode, 'foo';      # !!! sets mode to --w----r-T
  539.                  $mode = '0644'; chmod oct($mode), 'foo'; # this is better
  540.                  $mode = 0644;   chmod $mode, 'foo';      # this is best
  541.  
  542.  
  543.      chomp VARIABLE
  544.  
  545.      chomp LIST
  546.  
  547.      chomp   This is a slightly safer version of the chop entry elsewhere in
  548.              this document .  It removes any line ending that corresponds to
  549.              the current value of $/ (also known as $INPUT_RECORD_SEPARATOR in
  550.              the English module).  It returns the total number of characters
  551.              removed from all its arguments.  It's often used to remove the
  552.              newline from the end of an input record when you're worried that
  553.              the final record may be missing its newline.  When in paragraph
  554.              mode ($/ = ""), it removes all trailing newlines from the string.
  555.              If VARIABLE is omitted, it chomps $_.  Example:
  556.  
  557.                  while (<>) {
  558.                      chomp;  # avoid \n on last field
  559.                      @array = split(/:/);
  560.                      ...
  561.                  }
  562.  
  563.              You can actually chomp anything that's an lvalue, including an
  564.              assignment:
  565.  
  566.                  chomp($cwd = `pwd`);
  567.                  chomp($answer = <STDIN>);
  568.  
  569.              If you chomp a list, each element is chomped, and the total
  570.              number of characters removed is returned.
  571.  
  572.      chop VARIABLE
  573.  
  574.      chop LIST
  575.  
  576.      chop    Chops off the last character of a string and returns the
  577.              character chopped.  It's used primarily to remove the newline
  578.              from the end of an input record, but is much more efficient than
  579.              s/\n// because it neither scans nor copies the string.  If
  580.              VARIABLE is omitted, chops $_.  Example:
  581.  
  582.                  while (<>) {
  583.                      chop;   # avoid \n on last field
  584.                      @array = split(/:/);
  585.                      ...
  586.                  }
  587.  
  588.  
  589.  
  590.  
  591.                                                                         PPPPaaaaggggeeee 9999
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  599.  
  600.  
  601.  
  602.              You can actually chop anything that's an lvalue, including an
  603.              assignment:
  604.  
  605.                  chop($cwd = `pwd`);
  606.                  chop($answer = <STDIN>);
  607.  
  608.              If you chop a list, each element is chopped.  Only the value of
  609.              the last chop is returned.
  610.  
  611.              Note that chop returns the last character.  To return all but the
  612.              last character, use substr($string, 0, -1).
  613.  
  614.      chown LIST
  615.              Changes the owner (and group) of a list of files.  The first two
  616.              elements of the list must be the _N_U_M_E_R_I_C_A_L uid and gid, in that
  617.              order.  Returns the number of files successfully changed.
  618.  
  619.                  $cnt = chown $uid, $gid, 'foo', 'bar';
  620.                  chown $uid, $gid, @filenames;
  621.  
  622.              Here's an example that looks up nonnumeric uids in the passwd
  623.              file:
  624.  
  625.                  print "User: ";
  626.                  chop($user = <STDIN>);
  627.                  print "Files: "
  628.                  chop($pattern = <STDIN>);
  629.  
  630.                  ($login,$pass,$uid,$gid) = getpwnam($user)
  631.                      or die "$user not in passwd file";
  632.  
  633.                  @ary = <${pattern}>;        # expand filenames
  634.                  chown $uid, $gid, @ary;
  635.  
  636.              On most systems, you are not allowed to change the ownership of
  637.              the file unless you're the superuser, although you should be able
  638.              to change the group to any of your secondary groups.  On insecure
  639.              systems, these restrictions may be relaxed, but this is not a
  640.              portable assumption.
  641.  
  642.      chr NUMBER
  643.  
  644.      chr     Returns the character represented by that NUMBER in the character
  645.              set.  For example, chr(65) is "A" in ASCII.  For the reverse, use
  646.              the ord entry elsewhere in this document .
  647.  
  648.              If NUMBER is omitted, uses $_.
  649.  
  650.      chroot FILENAME
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.                                                                        PPPPaaaaggggeeee 11110000
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  665.  
  666.  
  667.  
  668.      chroot  This function works as the system call by the same name: it makes
  669.              the named directory the new root directory for all further
  670.              pathnames that begin with a "/" by your process and all of its
  671.              children.  (It doesn't change your current working directory,
  672.              which is unaffected.)  For security reasons, this call is
  673.              restricted to the superuser.  If FILENAME is omitted, does chroot
  674.              to $_.
  675.  
  676.      close FILEHANDLE
  677.              Closes the file or pipe associated with the file handle,
  678.              returning TRUE only if stdio successfully flushes buffers and
  679.              closes the system file descriptor.
  680.  
  681.              You don't have to close FILEHANDLE if you are immediately going
  682.              to do another _o_p_e_n() on it, because _o_p_e_n() will close it for you.
  683.              (See _o_p_e_n().)  However, an explicit close on an input file resets
  684.              the line counter ($.), while the implicit close done by _o_p_e_n()
  685.              does not.
  686.  
  687.              If the file handle came from a piped open close will additionally
  688.              return FALSE if one of the other system calls involved fails or
  689.              if the program exits with non-zero status.  (If the only problem
  690.              was that the program exited non-zero $! will be set to 0.) Also,
  691.              closing a pipe will wait for the process executing on the pipe to
  692.              complete, in case you want to look at the output of the pipe
  693.              afterwards.  Closing a pipe explicitly also puts the exit status
  694.              value of the command into $?.  Example:
  695.  
  696.                  open(OUTPUT, '|sort >foo')  # pipe to sort
  697.                      or die "Can't start sort: $!";
  698.                  ...                         # print stuff to output
  699.                  close OUTPUT                # wait for sort to finish
  700.                      or warn $! ? "Error closing sort pipe: $!"
  701.                                 : "Exit status $? from sort";
  702.                  open(INPUT, 'foo')          # get sort's results
  703.                      or die "Can't open 'foo' for input: $!";
  704.  
  705.              FILEHANDLE may be an expression whose value gives the real
  706.              filehandle name.
  707.  
  708.      closedir DIRHANDLE
  709.              Closes a directory opened by _o_p_e_n_d_i_r().
  710.  
  711.      connect SOCKET,NAME
  712.              Attempts to connect to a remote socket, just as the connect
  713.              system call does.  Returns TRUE if it succeeded, FALSE otherwise.
  714.              NAME should be a packed address of the appropriate type for the
  715.              socket.  See the examples in the section on _S_o_c_k_e_t_s:
  716.              _C_l_i_e_n_t/_S_e_r_v_e_r _C_o_m_m_u_n_i_c_a_t_i_o_n in the _p_e_r_l_i_p_c manpage.
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.                                                                        PPPPaaaaggggeeee 11111111
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  731.  
  732.  
  733.  
  734.      continue BLOCK
  735.              Actually a flow control statement rather than a function.  If
  736.              there is a continue BLOCK attached to a BLOCK (typically in a
  737.              while or foreach), it is always executed just before the
  738.              conditional is about to be evaluated again, just like the third
  739.              part of a for loop in C.  Thus it can be used to increment a loop
  740.              variable, even when the loop has been continued via the next
  741.              statement (which is similar to the C continue statement).
  742.  
  743.      cos EXPR
  744.              Returns the cosine of EXPR (expressed in radians).  If EXPR is
  745.              omitted takes cosine of $_.
  746.  
  747.              For the inverse cosine operation, you may use the _P_O_S_I_X::_a_c_o_s()
  748.              function, or use this relation:
  749.  
  750.                  sub acos { atan2( sqrt(1 - $_[0] * $_[0]), $_[0] ) }
  751.  
  752.  
  753.      crypt PLAINTEXT,SALT
  754.              Encrypts a string exactly like the _c_r_y_p_t(3) function in the C
  755.              library (assuming that you actually have a version there that has
  756.              not been extirpated as a potential munition).  This can prove
  757.              useful for checking the password file for lousy passwords,
  758.              amongst other things.  Only the guys wearing white hats should do
  759.              this.
  760.  
  761.              Note that crypt is intended to be a one-way function, much like
  762.              breaking eggs to make an omelette.  There is no (known)
  763.              corresponding decrypt function.  As a result, this function isn't
  764.              all that useful for cryptography.  (For that, see your nearby
  765.              CPAN mirror.)
  766.  
  767.              Here's an example that makes sure that whoever runs this program
  768.              knows their own password:
  769.  
  770.                  $pwd = (getpwuid($<))[1];
  771.                  $salt = substr($pwd, 0, 2);
  772.  
  773.                  system "stty -echo";
  774.                  print "Password: ";
  775.                  chop($word = <STDIN>);
  776.                  print "\n";
  777.                  system "stty echo";
  778.  
  779.                  if (crypt($word, $salt) ne $pwd) {
  780.                      die "Sorry...\n";
  781.                  } else {
  782.                      print "ok\n";
  783.                  }
  784.  
  785.              Of course, typing in your own password to whoever asks you for it
  786.  
  787.  
  788.  
  789.                                                                        PPPPaaaaggggeeee 11112222
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  797.  
  798.  
  799.  
  800.              is unwise.
  801.  
  802.      dbmclose HASH
  803.              [This function has been superseded by the _u_n_t_i_e() function.]
  804.  
  805.              Breaks the binding between a DBM file and a hash.
  806.  
  807.      dbmopen HASH,DBNAME,MODE
  808.              [This function has been superseded by the _t_i_e() function.]
  809.  
  810.              This binds a _d_b_m(3), _n_d_b_m(3), _s_d_b_m(3), _g_d_b_m(), or Berkeley DB
  811.              file to a hash.  HASH is the name of the hash.  (Unlike normal
  812.              open, the first argument is _N_O_T a filehandle, even though it
  813.              looks like one).  DBNAME is the name of the database (without the
  814.              ._d_i_r or ._p_a_g extension if any).  If the database does not exist,
  815.              it is created with protection specified by MODE (as modified by
  816.              the _u_m_a_s_k()).  If your system supports only the older DBM
  817.              functions, you may perform only one _d_b_m_o_p_e_n() in your program.
  818.              In older versions of Perl, if your system had neither DBM nor
  819.              ndbm, calling _d_b_m_o_p_e_n() produced a fatal error; it now falls back
  820.              to _s_d_b_m(3).
  821.  
  822.              If you don't have write access to the DBM file, you can only read
  823.              hash variables, not set them.  If you want to test whether you
  824.              can write, either use file tests or try setting a dummy hash
  825.              entry inside an _e_v_a_l(), which will trap the error.
  826.  
  827.              Note that functions such as _k_e_y_s() and _v_a_l_u_e_s() may return huge
  828.              array values when used on large DBM files.  You may prefer to use
  829.              the _e_a_c_h() function to iterate over large DBM files.  Example:
  830.  
  831.                  # print out history file offsets
  832.                  dbmopen(%HIST,'/usr/lib/news/history',0666);
  833.                  while (($key,$val) = each %HIST) {
  834.                      print $key, ' = ', unpack('L',$val), "\n";
  835.                  }
  836.                  dbmclose(%HIST);
  837.  
  838.              See also the _A_n_y_D_B_M__F_i_l_e manpage for a more general description
  839.              of the pros and cons of the various dbm approaches, as well as
  840.              the _D_B__F_i_l_e manpage for a particularly rich implementation.
  841.  
  842.      defined EXPR
  843.  
  844.      defined Returns a Boolean value telling whether EXPR has a value other
  845.              than the undefined value undef.  If EXPR is not present, $_ will
  846.              be checked.
  847.  
  848.              Many operations return undef to indicate failure, end of file,
  849.              system error, uninitialized variable, and other exceptional
  850.              conditions.  This function allows you to distinguish undef from
  851.              other values.  (A simple Boolean test will not distinguish among
  852.  
  853.  
  854.  
  855.                                                                        PPPPaaaaggggeeee 11113333
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  863.  
  864.  
  865.  
  866.              undef, zero, the empty string, and "0", which are all equally
  867.              false.)  Note that since undef is a valid scalar, its presence
  868.              doesn't _n_e_c_e_s_s_a_r_i_l_y indicate an exceptional condition: _p_o_p()
  869.              returns undef when its argument is an empty array, _o_r when the
  870.              element to return happens to be undef.
  871.  
  872.              You may also use _d_e_f_i_n_e_d() to check whether a subroutine exists.
  873.              On the other hand, use of _d_e_f_i_n_e_d() upon aggregates (hashes and
  874.              arrays) is not guaranteed to produce intuitive results, and
  875.              should probably be avoided.
  876.  
  877.              When used on a hash element, it tells you whether the value is
  878.              defined, not whether the key exists in the hash.  Use the exists
  879.              entry elsewhere in this document for the latter purpose.
  880.  
  881.              Examples:
  882.  
  883.                  print if defined $switch{'D'};
  884.                  print "$val\n" while defined($val = pop(@ary));
  885.                  die "Can't readlink $sym: $!"
  886.                      unless defined($value = readlink $sym);
  887.                  sub foo { defined &$bar ? &$bar(@_) : die "No bar"; }
  888.                  $debugging = 0 unless defined $debugging;
  889.  
  890.              Note:  Many folks tend to overuse _d_e_f_i_n_e_d(), and then are
  891.              surprised to discover that the number 0 and "" (the zero-length
  892.              string) are, in fact, defined values.  For example, if you say
  893.  
  894.                  "ab" =~ /a(.*)b/;
  895.  
  896.              the pattern match succeeds, and $1 is defined, despite the fact
  897.              that it matched "nothing".  But it didn't really match nothing--
  898.              rather, it matched something that happened to be 0 characters
  899.              long.  This is all very above-board and honest.  When a function
  900.              returns an undefined value, it's an admission that it couldn't
  901.              give you an honest answer.  So you should use _d_e_f_i_n_e_d() only when
  902.              you're questioning the integrity of what you're trying to do.  At
  903.              other times, a simple comparison to 0 or "" is what you want.
  904.  
  905.              Currently, using _d_e_f_i_n_e_d() on an entire array or hash reports
  906.              whether memory for that aggregate has ever been allocated.  So an
  907.              array you set to the empty list appears undefined initially, and
  908.              one that once was full and that you then set to the empty list
  909.              still appears defined.  You should instead use a simple test for
  910.              size:
  911.  
  912.                  if (@an_array) { print "has array elements\n" }
  913.                  if (%a_hash)   { print "has hash members\n"   }
  914.  
  915.              Using _u_n_d_e_f() on these, however, does clear their memory and then
  916.              report them as not defined anymore, but you shoudln't do that
  917.              unless you don't plan to use them again, because it saves time
  918.  
  919.  
  920.  
  921.                                                                        PPPPaaaaggggeeee 11114444
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  929.  
  930.  
  931.  
  932.              when you load them up again to have memory already ready to be
  933.              filled.
  934.  
  935.              This counterintuitive behaviour of _d_e_f_i_n_e_d() on aggregates may be
  936.              changed, fixed, or broken in a future release of Perl.
  937.  
  938.              See also the undef, exists,  and ref entries elsewhere in this
  939.              document .
  940.  
  941.      delete EXPR
  942.              Deletes the specified _k_e_y(s) and their associated values from a
  943.              hash.  For each key, returns the deleted value associated with
  944.              that key, or the undefined value if there was no such key.
  945.              Deleting from $ENV{} modifies the environment.  Deleting from a
  946.              hash tied to a DBM file deletes the entry from the DBM file.
  947.              (But deleting from a _t_i_e()d hash doesn't necessarily return
  948.              anything.)
  949.  
  950.              The following deletes all the values of a hash:
  951.  
  952.                  foreach $key (keys %HASH) {
  953.                      delete $HASH{$key};
  954.                  }
  955.  
  956.              And so does this:
  957.  
  958.                  delete @HASH{keys %HASH}
  959.  
  960.              (But both of these are slower than the _u_n_d_e_f() command.)  Note
  961.              that the EXPR can be arbitrarily complicated as long as the final
  962.              operation is a hash element lookup or hash slice:
  963.  
  964.                  delete $ref->[$x][$y]{$key};
  965.                  delete @{$ref->[$x][$y]}{$key1, $key2, @morekeys};
  966.  
  967.  
  968.      die LIST
  969.              Outside of an _e_v_a_l(), prints the value of LIST to STDERR and
  970.              exits with the current value of $! (errno).  If $! is 0, exits
  971.              with the value of ($? >> 8) (backtick `command` status).  If ($?
  972.              >> 8) is 0, exits with 255.  Inside an _e_v_a_l(), the error message
  973.              is stuffed into $@, and the _e_v_a_l() is terminated with the
  974.              undefined value; this makes _d_i_e() the way to raise an exception.
  975.  
  976.              Equivalent examples:
  977.  
  978.                  die "Can't cd to spool: $!\n" unless chdir '/usr/spool/news';
  979.                  chdir '/usr/spool/news' or die "Can't cd to spool: $!\n"
  980.  
  981.              If the value of EXPR does not end in a newline, the current
  982.              script line number and input line number (if any) are also
  983.              printed, and a newline is supplied.  Hint: sometimes appending ",
  984.  
  985.  
  986.  
  987.                                                                        PPPPaaaaggggeeee 11115555
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  995.  
  996.  
  997.  
  998.              stopped" to your message will cause it to make better sense when
  999.              the string "at foo line 123" is appended.  Suppose you are
  1000.              running script "canasta".
  1001.  
  1002.                  die "/etc/games is no good";
  1003.                  die "/etc/games is no good, stopped";
  1004.  
  1005.              produce, respectively
  1006.  
  1007.                  /etc/games is no good at canasta line 123.
  1008.                  /etc/games is no good, stopped at canasta line 123.
  1009.  
  1010.              See also _e_x_i_t() and _w_a_r_n().
  1011.  
  1012.              If LIST is empty and $@ already contains a value (typically from
  1013.              a previous eval) that value is reused after appending
  1014.              "\t...propagated".  This is useful for propagating exceptions:
  1015.  
  1016.                  eval { ... };
  1017.                  die unless $@ =~ /Expected exception/;
  1018.  
  1019.              If $@ is empty then the string "Died" is used.
  1020.  
  1021.              You can arrange for a callback to be called just before the _d_i_e()
  1022.              does its deed, by setting the $SIG{__DIE__} hook.  The associated
  1023.              handler will be called with the error text and can change the
  1024.              error message, if it sees fit, by calling _d_i_e() again.  See the
  1025.              section on $_S_I_G{_e_x_p_r} in the _p_e_r_l_v_a_r manpage for details on
  1026.              setting %SIG entries, and the section on _e_v_a_l _B_L_O_C_K for some
  1027.              examples.
  1028.  
  1029.              Note that the $SIG{__DIE__} hook is called even inside _e_v_a_l()ed
  1030.              blocks/strings.  If one wants the hook to do nothing in such
  1031.              situations, put
  1032.  
  1033.                      die @_ if $^S;
  1034.  
  1035.              as the first line of the handler (see the section on $^_S in the
  1036.              _p_e_r_l_v_a_r manpage).
  1037.  
  1038.      do BLOCK
  1039.              Not really a function.  Returns the value of the last command in
  1040.              the sequence of commands indicated by BLOCK.  When modified by a
  1041.              loop modifier, executes the BLOCK once before testing the loop
  1042.              condition.  (On other statements the loop modifiers test the
  1043.              conditional first.)
  1044.  
  1045.      do SUBROUTINE(LIST)
  1046.              A deprecated form of subroutine call.  See the _p_e_r_l_s_u_b manpage.
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.                                                                        PPPPaaaaggggeeee 11116666
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  1061.  
  1062.  
  1063.  
  1064.      do EXPR Uses the value of EXPR as a filename and executes the contents of
  1065.              the file as a Perl script.  Its primary use is to include
  1066.              subroutines from a Perl subroutine library.
  1067.  
  1068.                  do 'stat.pl';
  1069.  
  1070.              is just like
  1071.  
  1072.                  scalar eval `cat stat.pl`;
  1073.  
  1074.              except that it's more efficient, more concise, keeps track of the
  1075.              current filename for error messages, and searches all the ----IIII
  1076.              libraries if the file isn't in the current directory (see also
  1077.              the @INC array in the section on _P_r_e_d_e_f_i_n_e_d _N_a_m_e_s in the _p_e_r_l_v_a_r
  1078.              manpage).  It's the same, however, in that it does reparse the
  1079.              file every time you call it, so you probably don't want to do
  1080.              this inside a loop.
  1081.  
  1082.              Note that inclusion of library modules is better done with the
  1083.              _u_s_e() and _r_e_q_u_i_r_e() operators, which also do error checking and
  1084.              raise an exception if there's a problem.
  1085.  
  1086.      dump LABEL
  1087.              This causes an immediate core dump.  Primarily this is so that
  1088.              you can use the uuuunnnndddduuuummmmpppp program to turn your core dump into an
  1089.              executable binary after having initialized all your variables at
  1090.              the beginning of the program.  When the new binary is executed it
  1091.              will begin by executing a goto LABEL (with all the restrictions
  1092.              that goto suffers).  Think of it as a goto with an intervening
  1093.              core dump and reincarnation.  If LABEL is omitted, restarts the
  1094.              program from the top.  WARNING: any files opened at the time of
  1095.              the dump will NOT be open any more when the program is
  1096.              reincarnated, with possible resulting confusion on the part of
  1097.              Perl.  See also ----uuuu option in the _p_e_r_l_r_u_n manpage.
  1098.  
  1099.              Example:
  1100.  
  1101.                  #!/usr/bin/perl
  1102.                  require 'getopt.pl';
  1103.                  require 'stat.pl';
  1104.                  %days = (
  1105.                      'Sun' => 1,
  1106.                      'Mon' => 2,
  1107.                      'Tue' => 3,
  1108.                      'Wed' => 4,
  1109.                      'Thu' => 5,
  1110.                      'Fri' => 6,
  1111.                      'Sat' => 7,
  1112.                  );
  1113.  
  1114.                  dump QUICKSTART if $ARGV[0] eq '-d';
  1115.  
  1116.  
  1117.  
  1118.  
  1119.                                                                        PPPPaaaaggggeeee 11117777
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  1127.  
  1128.  
  1129.  
  1130.                  QUICKSTART:
  1131.                  Getopt('f');
  1132.  
  1133.  
  1134.      each HASH
  1135.              When called in a list context, returns a 2-element array
  1136.              consisting of the key and value for the next element of a hash,
  1137.              so that you can iterate over it.  When called in a scalar
  1138.              context, returns the key for only the next element in the hash.
  1139.              (Note: Keys may be "0" or "", which are logically false; you may
  1140.              wish to avoid constructs like while ($k = each %foo) {} for this
  1141.              reason.)
  1142.  
  1143.              Entries are returned in an apparently random order.  When the
  1144.              hash is entirely read, a null array is returned in list context
  1145.              (which when assigned produces a FALSE (0) value), and undef is
  1146.              returned in a scalar context.  The next call to _e_a_c_h() after that
  1147.              will start iterating again.  There is a single iterator for each
  1148.              hash, shared by all _e_a_c_h(), _k_e_y_s(), and _v_a_l_u_e_s() function calls
  1149.              in the program; it can be reset by reading all the elements from
  1150.              the hash, or by evaluating keys HASH or values HASH.  If you add
  1151.              or delete elements of a hash while you're iterating over it, you
  1152.              may get entries skipped or duplicated, so don't.
  1153.  
  1154.              The following prints out your environment like the _p_r_i_n_t_e_n_v(1)
  1155.              program, only in a different order:
  1156.  
  1157.                  while (($key,$value) = each %ENV) {
  1158.                      print "$key=$value\n";
  1159.                  }
  1160.  
  1161.              See also _k_e_y_s() and _v_a_l_u_e_s().
  1162.  
  1163.      eof FILEHANDLE
  1164.  
  1165.      eof ()
  1166.  
  1167.      eof     Returns 1 if the next read on FILEHANDLE will return end of file,
  1168.              or if FILEHANDLE is not open.  FILEHANDLE may be an expression
  1169.              whose value gives the real filehandle name.  (Note that this
  1170.              function actually reads a character and then _u_n_g_e_t_c()s it, so it
  1171.              is not very useful in an interactive context.)  Do not read from
  1172.              a terminal file (or call eof(FILEHANDLE) on it) after end-of-file
  1173.              is reached.  Filetypes such as terminals may lose the end-of-file
  1174.              condition if you do.
  1175.  
  1176.              An eof without an argument uses the last file read as argument.
  1177.              Empty parentheses () may be used to indicate the pseudo file
  1178.              formed of the files listed on the command line, i.e., eof() is
  1179.              reasonable to use inside a while (<>) loop to detect the end of
  1180.              only the last file.  Use eof(ARGV) or eof without the parentheses
  1181.              to test _E_A_C_H file in a while (<>) loop.  Examples:
  1182.  
  1183.  
  1184.  
  1185.                                                                        PPPPaaaaggggeeee 11118888
  1186.  
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  1193.  
  1194.  
  1195.  
  1196.                  # reset line numbering on each input file
  1197.                  while (<>) {
  1198.                      print "$.\t$_";
  1199.                      close(ARGV) if (eof);   # Not eof().
  1200.                  }
  1201.  
  1202.                  # insert dashes just before last line of last file
  1203.                  while (<>) {
  1204.                      if (eof()) {
  1205.                          print "--------------\n";
  1206.                          close(ARGV);        # close or break; is needed if we
  1207.                                              # are reading from the terminal
  1208.                      }
  1209.                      print;
  1210.                  }
  1211.  
  1212.              Practical hint: you almost never need to use eof in Perl, because
  1213.              the input operators return undef when they run out of data.
  1214.  
  1215.      eval EXPR
  1216.  
  1217.      eval BLOCK
  1218.              EXPR is parsed and executed as if it were a little Perl program.
  1219.              It is executed in the context of the current Perl program, so
  1220.              that any variable settings or subroutine and format definitions
  1221.              remain afterwards.  The value returned is the value of the last
  1222.              expression evaluated, or a return statement may be used, just as
  1223.              with subroutines.  The last expression is evaluated in scalar or
  1224.              array context, depending on the context of the eval.
  1225.  
  1226.              If there is a syntax error or runtime error, or a _d_i_e() statement
  1227.              is executed, an undefined value is returned by _e_v_a_l(), and $@ is
  1228.              set to the error message.  If there was no error, $@ is
  1229.              guaranteed to be a null string.  If EXPR is omitted, evaluates
  1230.              $_.  The final semicolon, if any, may be omitted from the
  1231.              expression.  Beware that using _e_v_a_l() neither silences perl from
  1232.              printing warnings to STDERR, nor does it stuff the text of
  1233.              warning messages into $@.  To do either of those, you have to use
  1234.              the $SIG{__WARN__} facility.  See _w_a_r_n() and the _p_e_r_l_v_a_r manpage.
  1235.  
  1236.              Note that, because _e_v_a_l() traps otherwise-fatal errors, it is
  1237.              useful for determining whether a particular feature (such as
  1238.              _s_o_c_k_e_t() or _s_y_m_l_i_n_k()) is implemented.  It is also Perl's
  1239.              exception trapping mechanism, where the die operator is used to
  1240.              raise exceptions.
  1241.  
  1242.              If the code to be executed doesn't vary, you may use the eval-
  1243.              BLOCK form to trap run-time errors without incurring the penalty
  1244.              of recompiling each time.  The error, if any, is still returned
  1245.              in $@.  Examples:
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.                                                                        PPPPaaaaggggeeee 11119999
  1252.  
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  1259.  
  1260.  
  1261.  
  1262.                  # make divide-by-zero nonfatal
  1263.                  eval { $answer = $a / $b; }; warn $@ if $@;
  1264.  
  1265.                  # same thing, but less efficient
  1266.                  eval '$answer = $a / $b'; warn $@ if $@;
  1267.  
  1268.                  # a compile-time error
  1269.                  eval { $answer = };
  1270.  
  1271.                  # a run-time error
  1272.                  eval '$answer =';   # sets $@
  1273.  
  1274.              When using the eval{} form as an exception trap in libraries, you
  1275.              may wish not to trigger any __DIE__ hooks that user code may have
  1276.              installed.  You can use the local $SIG{__DIE__} construct for
  1277.              this purpose, as shown in this example:
  1278.  
  1279.                  # a very private exception trap for divide-by-zero
  1280.                  eval { local $SIG{'__DIE__'}; $answer = $a / $b; }; warn $@ if $@;
  1281.  
  1282.              This is especially significant, given that __DIE__ hooks can call
  1283.              _d_i_e() again, which has the effect of changing their error
  1284.              messages:
  1285.  
  1286.                  # __DIE__ hooks may modify error messages
  1287.                  {
  1288.                     local $SIG{'__DIE__'} = sub { (my $x = $_[0]) =~ s/foo/bar/g; die $x };
  1289.                     eval { die "foo foofs here" };
  1290.                     print $@ if $@;                # prints "bar barfs here"
  1291.                  }
  1292.  
  1293.              With an _e_v_a_l(), you should be especially careful to remember
  1294.              what's being looked at when:
  1295.  
  1296.                  eval $x;            # CASE 1
  1297.                  eval "$x";          # CASE 2
  1298.  
  1299.                  eval '$x';          # CASE 3
  1300.                  eval { $x };        # CASE 4
  1301.  
  1302.                  eval "\$$x++"       # CASE 5
  1303.                  $$x++;              # CASE 6
  1304.  
  1305.              Cases 1 and 2 above behave identically: they run the code
  1306.              contained in the variable $x.  (Although case 2 has misleading
  1307.              double quotes making the reader wonder what else might be
  1308.              happening (nothing is).)  Cases 3 and 4 likewise behave in the
  1309.              same way: they run the code '$x', which does nothing but return
  1310.              the value of $x.  (Case 4 is preferred for purely visual reasons,
  1311.              but it also has the advantage of compiling at compile-time
  1312.              instead of at run-time.)  Case 5 is a place where normally you
  1313.              _W_O_U_L_D like to use double quotes, except that in this particular
  1314.  
  1315.  
  1316.  
  1317.                                                                        PPPPaaaaggggeeee 22220000
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  1325.  
  1326.  
  1327.  
  1328.              situation, you can just use symbolic references instead, as in
  1329.              case 6.
  1330.  
  1331.      exec LIST
  1332.              The _e_x_e_c() function executes a system command _A_N_D _N_E_V_E_R _R_E_T_U_R_N_S -
  1333.              use _s_y_s_t_e_m() instead of _e_x_e_c() if you want it to return. It fails
  1334.              and returns FALSE only if the command does not exist _a_n_d it is
  1335.              executed directly instead of via your system's command shell (see
  1336.              below).
  1337.  
  1338.              If there is more than one argument in LIST, or if LIST is an
  1339.              array with more than one value, calls _e_x_e_c_v_p(3) with the
  1340.              arguments in LIST.  If there is only one scalar argument, the
  1341.              argument is checked for shell metacharacters, and if there are
  1342.              any, the entire argument is passed to the system's command shell
  1343.              for parsing (this is /bin/sh -c on Unix platforms, but varies on
  1344.              other platforms).  If there are no shell metacharacters in the
  1345.              argument, it is split into words and passed directly to _e_x_e_c_v_p(),
  1346.              which is more efficient.  Note: _e_x_e_c() and _s_y_s_t_e_m() do not flush
  1347.              your output buffer, so you may need to set $| to avoid lost
  1348.              output.  Examples:
  1349.  
  1350.                  exec '/bin/echo', 'Your arguments are: ', @ARGV;
  1351.                  exec "sort $outfile | uniq";
  1352.  
  1353.              If you don't really want to execute the first argument, but want
  1354.              to lie to the program you are executing about its own name, you
  1355.              can specify the program you actually want to run as an "indirect
  1356.              object" (without a comma) in front of the LIST.  (This always
  1357.              forces interpretation of the LIST as a multivalued list, even if
  1358.              there is only a single scalar in the list.)  Example:
  1359.  
  1360.                  $shell = '/bin/csh';
  1361.                  exec $shell '-sh';          # pretend it's a login shell
  1362.  
  1363.              or, more directly,
  1364.  
  1365.                  exec {'/bin/csh'} '-sh';    # pretend it's a login shell
  1366.  
  1367.              When the arguments get executed via the system shell, results
  1368.              will be subject to its quirks and capabilities.  See the section
  1369.              on `_S_T_R_I_N_G` in the _p_e_r_l_o_p manpage for details.
  1370.  
  1371.      exists EXPR
  1372.              Returns TRUE if the specified hash key exists in its hash array,
  1373.              even if the corresponding value is undefined.
  1374.  
  1375.                  print "Exists\n" if exists $array{$key};
  1376.                  print "Defined\n" if defined $array{$key};
  1377.                  print "True\n" if $array{$key};
  1378.  
  1379.              A hash element can be TRUE only if it's defined, and defined if
  1380.  
  1381.  
  1382.  
  1383.                                                                        PPPPaaaaggggeeee 22221111
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  1391.  
  1392.  
  1393.  
  1394.              it exists, but the reverse doesn't necessarily hold true.
  1395.  
  1396.              Note that the EXPR can be arbitrarily complicated as long as the
  1397.              final operation is a hash key lookup:
  1398.  
  1399.                  if (exists $ref->[$x][$y]{$key}) { ... }
  1400.  
  1401.  
  1402.      exit EXPR
  1403.              Evaluates EXPR and exits immediately with that value.  (Actually,
  1404.              it calls any defined END routines first, but the END routines may
  1405.              not abort the exit.  Likewise any object destructors that need to
  1406.              be called are called before exit.)  Example:
  1407.  
  1408.                  $ans = <STDIN>;
  1409.                  exit 0 if $ans =~ /^[Xx]/;
  1410.  
  1411.              See also _d_i_e().  If EXPR is omitted, exits with 0 status.  The
  1412.              only universally portable values for EXPR are 0 for success and 1
  1413.              for error; all other values are subject to unpredictable
  1414.              interpretation depending on the environment in which the Perl
  1415.              program is running.
  1416.  
  1417.              You shouldn't use _e_x_i_t() to abort a subroutine if there's any
  1418.              chance that someone might want to trap whatever error happened.
  1419.              Use _d_i_e() instead, which can be trapped by an _e_v_a_l().
  1420.  
  1421.      exp EXPR
  1422.  
  1423.      exp     Returns _e (the natural logarithm base) to the power of EXPR.  If
  1424.              EXPR is omitted, gives exp($_).
  1425.  
  1426.      fcntl FILEHANDLE,FUNCTION,SCALAR
  1427.              Implements the _f_c_n_t_l(2) function.  You'll probably have to say
  1428.  
  1429.                  use Fcntl;
  1430.  
  1431.              first to get the correct function definitions.  Argument
  1432.              processing and value return works just like _i_o_c_t_l() below.  Note
  1433.              that _f_c_n_t_l() will produce a fatal error if used on a machine that
  1434.              doesn't implement _f_c_n_t_l(2).  For example:
  1435.  
  1436.                  use Fcntl;
  1437.                  fcntl($filehandle, F_GETLK, $packed_return_buffer);
  1438.  
  1439.  
  1440.      fileno FILEHANDLE
  1441.              Returns the file descriptor for a filehandle.  This is useful for
  1442.              constructing bitmaps for _s_e_l_e_c_t().  If FILEHANDLE is an
  1443.              expression, the value is taken as the name of the filehandle.
  1444.  
  1445.  
  1446.  
  1447.  
  1448.  
  1449.                                                                        PPPPaaaaggggeeee 22222222
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  1457.  
  1458.  
  1459.  
  1460.      flock FILEHANDLE,OPERATION
  1461.              Calls _f_l_o_c_k(2), or an emulation of it, on FILEHANDLE.  Returns
  1462.              TRUE for success, FALSE on failure.  Produces a fatal error if
  1463.              used on a machine that doesn't implement _f_l_o_c_k(2), _f_c_n_t_l(2)
  1464.              locking, or _l_o_c_k_f(3).  _f_l_o_c_k() is Perl's portable file locking
  1465.              interface, although it locks only entire files, not records.
  1466.  
  1467.              OPERATION is one of LOCK_SH, LOCK_EX, or LOCK_UN, possibly
  1468.              combined with LOCK_NB.  These constants are traditionally valued
  1469.              1, 2, 8 and 4, but you can use the symbolic names if import them
  1470.              from the Fcntl module, either individually, or as a group using
  1471.              the ':flock' tag.  LOCK_SH requests a shared lock, LOCK_EX
  1472.              requests an exclusive lock, and LOCK_UN releases a previously
  1473.              requested lock.  If LOCK_NB is added to LOCK_SH or LOCK_EX then
  1474.              _f_l_o_c_k() will return immediately rather than blocking waiting for
  1475.              the lock (check the return status to see if you got it).
  1476.  
  1477.              To avoid the possibility of mis-coordination, Perl flushes
  1478.              FILEHANDLE before (un)locking it.
  1479.  
  1480.              Note that the emulation built with _l_o_c_k_f(3) doesn't provide
  1481.              shared locks, and it requires that FILEHANDLE be open with write
  1482.              intent.  These are the semantics that _l_o_c_k_f(3) implements.  Most
  1483.              (all?) systems implement _l_o_c_k_f(3) in terms of _f_c_n_t_l(2) locking,
  1484.              though, so the differing semantics shouldn't bite too many
  1485.              people.
  1486.  
  1487.              Note also that some versions of _f_l_o_c_k() cannot lock things over
  1488.              the network; you would need to use the more system-specific
  1489.              _f_c_n_t_l() for that.  If you like you can force Perl to ignore your
  1490.              system's _f_l_o_c_k(2) function, and so provide its own _f_c_n_t_l(2)-based
  1491.              emulation, by passing the switch -Ud_flock to the _C_o_n_f_i_g_u_r_e
  1492.              program when you configure perl.
  1493.  
  1494.              Here's a mailbox appender for BSD systems.
  1495.  
  1496.                  use Fcntl ':flock'; # import LOCK_* constants
  1497.  
  1498.                  sub lock {
  1499.                      flock(MBOX,LOCK_EX);
  1500.                      # and, in case someone appended
  1501.                      # while we were waiting...
  1502.                      seek(MBOX, 0, 2);
  1503.                  }
  1504.  
  1505.                  sub unlock {
  1506.                      flock(MBOX,LOCK_UN);
  1507.                  }
  1508.  
  1509.                  open(MBOX, ">>/usr/spool/mail/$ENV{'USER'}")
  1510.                          or die "Can't open mailbox: $!";
  1511.  
  1512.  
  1513.  
  1514.  
  1515.                                                                        PPPPaaaaggggeeee 22223333
  1516.  
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  1523.  
  1524.  
  1525.  
  1526.                  lock();
  1527.                  print MBOX $msg,"\n\n";
  1528.                  unlock();
  1529.  
  1530.              See also the _D_B__F_i_l_e manpage for other _f_l_o_c_k() examples.
  1531.  
  1532.      fork    Does a _f_o_r_k(2) system call.  Returns the child pid to the parent
  1533.              process and 0 to the child process, or undef if the fork is
  1534.              unsuccessful.  Note: unflushed buffers remain unflushed in both
  1535.              processes, which means you may need to set $| ($AUTOFLUSH in
  1536.              English) or call the _a_u_t_o_f_l_u_s_h() method of IO::Handle to avoid
  1537.              duplicate output.
  1538.  
  1539.              If you _f_o_r_k() without ever waiting on your children, you will
  1540.              accumulate zombies:
  1541.  
  1542.                  $SIG{CHLD} = sub { wait };
  1543.  
  1544.              There's also the double-fork trick (error checking on _f_o_r_k()
  1545.              returns omitted);
  1546.  
  1547.                  unless ($pid = fork) {
  1548.                      unless (fork) {
  1549.                          exec "what you really wanna do";
  1550.                          die "no exec";
  1551.                          # ... or ...
  1552.                          ## (some_perl_code_here)
  1553.                          exit 0;
  1554.                      }
  1555.                      exit 0;
  1556.                  }
  1557.                  waitpid($pid,0);
  1558.  
  1559.              See also the _p_e_r_l_i_p_c manpage for more examples of forking and
  1560.              reaping moribund children.
  1561.  
  1562.              Note that if your forked child inherits system file descriptors
  1563.              like STDIN and STDOUT that are actually connected by a pipe or
  1564.              socket, even if you exit, the remote server (such as, say, httpd
  1565.              or rsh) won't think you're done.  You should reopen those to
  1566.              /dev/null if it's any issue.
  1567.  
  1568.      format  Declare a picture format with use by the _w_r_i_t_e() function.  For
  1569.              example:
  1570.  
  1571.                  format Something =
  1572.                      Test: @<<<<<<<< @||||| @>>>>>
  1573.                            $str,     $%,    '$' . int($num)
  1574.                  .
  1575.  
  1576.  
  1577.  
  1578.  
  1579.  
  1580.  
  1581.                                                                        PPPPaaaaggggeeee 22224444
  1582.  
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  1589.  
  1590.  
  1591.  
  1592.                  $str = "widget";
  1593.                  $num = $cost/$quantity;
  1594.                  $~ = 'Something';
  1595.                  write;
  1596.  
  1597.              See the _p_e_r_l_f_o_r_m manpage for many details and examples.
  1598.  
  1599.      formline PICTURE,LIST
  1600.              This is an internal function used by formats, though you may call
  1601.              it too.  It formats (see the _p_e_r_l_f_o_r_m manpage) a list of values
  1602.              according to the contents of PICTURE, placing the output into the
  1603.              format output accumulator, $^A (or $ACCUMULATOR in English).
  1604.              Eventually, when a _w_r_i_t_e() is done, the contents of $^A are
  1605.              written to some filehandle, but you could also read $^A yourself
  1606.              and then set $^A back to "".  Note that a format typically does
  1607.              one _f_o_r_m_l_i_n_e() per line of form, but the _f_o_r_m_l_i_n_e() function
  1608.              itself doesn't care how many newlines are embedded in the
  1609.              PICTURE.  This means that the ~ and ~~ tokens will treat the
  1610.              entire PICTURE as a single line.  You may therefore need to use
  1611.              multiple formlines to implement a single record format, just like
  1612.              the format compiler.
  1613.  
  1614.              Be careful if you put double quotes around the picture, because
  1615.              an "@" character may be taken to mean the beginning of an array
  1616.              name.  _f_o_r_m_l_i_n_e() always returns TRUE.  See the _p_e_r_l_f_o_r_m manpage
  1617.              for other examples.
  1618.  
  1619.      getc FILEHANDLE
  1620.  
  1621.      getc    Returns the next character from the input file attached to
  1622.              FILEHANDLE, or a null string at end of file.  If FILEHANDLE is
  1623.              omitted, reads from STDIN.  This is not particularly efficient.
  1624.              It cannot be used to get unbuffered single-characters, however.
  1625.              For that, try something more like:
  1626.  
  1627.                  if ($BSD_STYLE) {
  1628.                      system "stty cbreak </dev/tty >/dev/tty 2>&1";
  1629.                  }
  1630.                  else {
  1631.                      system "stty", '-icanon', 'eol', "\001";
  1632.                  }
  1633.  
  1634.                  $key = getc(STDIN);
  1635.  
  1636.                  if ($BSD_STYLE) {
  1637.                      system "stty -cbreak </dev/tty >/dev/tty 2>&1";
  1638.                  }
  1639.                  else {
  1640.                      system "stty", 'icanon', 'eol', '^@'; # ASCII null
  1641.                  }
  1642.                  print "\n";
  1643.  
  1644.  
  1645.  
  1646.  
  1647.                                                                        PPPPaaaaggggeeee 22225555
  1648.  
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  1655.  
  1656.  
  1657.  
  1658.              Determination of whether $BSD_STYLE should be set is left as an
  1659.              exercise to the reader.
  1660.  
  1661.              The _P_O_S_I_X::_g_e_t_a_t_t_r() function can do this more portably on
  1662.              systems alleging POSIX compliance.  See also the Term::ReadKey
  1663.              module from your nearest CPAN site; details on CPAN can be found
  1664.              on the CPAN entry in the _p_e_r_l_m_o_d manpage.
  1665.  
  1666.      getlogin
  1667.              Returns the current login from /_e_t_c/_u_t_m_p, if any.  If null, use
  1668.              _g_e_t_p_w_u_i_d().
  1669.  
  1670.                  $login = getlogin || getpwuid($<) || "Kilroy";
  1671.  
  1672.              Do not consider _g_e_t_l_o_g_i_n() for authentication: it is not as
  1673.              secure as _g_e_t_p_w_u_i_d().
  1674.  
  1675.      getpeername SOCKET
  1676.              Returns the packed sockaddr address of other end of the SOCKET
  1677.              connection.
  1678.  
  1679.                  use Socket;
  1680.                  $hersockaddr    = getpeername(SOCK);
  1681.                  ($port, $iaddr) = unpack_sockaddr_in($hersockaddr);
  1682.                  $herhostname    = gethostbyaddr($iaddr, AF_INET);
  1683.                  $herstraddr     = inet_ntoa($iaddr);
  1684.  
  1685.  
  1686.      getpgrp PID
  1687.              Returns the current process group for the specified PID.  Use a
  1688.              PID of 0 to get the current process group for the current
  1689.              process.  Will raise an exception if used on a machine that
  1690.              doesn't implement _g_e_t_p_g_r_p(2).  If PID is omitted, returns process
  1691.              group of current process.  Note that the POSIX version of
  1692.              _g_e_t_p_g_r_p() does not accept a PID argument, so only PID==0 is truly
  1693.              portable.
  1694.  
  1695.      getppid Returns the process id of the parent process.
  1696.  
  1697.      getpriority WHICH,WHO
  1698.              Returns the current priority for a process, a process group, or a
  1699.              user.  (See the _g_e_t_p_r_i_o_r_i_t_y(_2) manpage.)  Will raise a fatal
  1700.              exception if used on a machine that doesn't implement
  1701.              _g_e_t_p_r_i_o_r_i_t_y(2).
  1702.  
  1703.      getpwnam NAME
  1704.  
  1705.      getgrnam NAME
  1706.  
  1707.      gethostbyname NAME
  1708.  
  1709.  
  1710.  
  1711.  
  1712.  
  1713.                                                                        PPPPaaaaggggeeee 22226666
  1714.  
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  1721.  
  1722.  
  1723.  
  1724.      getnetbyname NAME
  1725.  
  1726.      getprotobyname NAME
  1727.  
  1728.      getpwuid UID
  1729.  
  1730.      getgrgid GID
  1731.  
  1732.      getservbyname NAME,PROTO
  1733.  
  1734.      gethostbyaddr ADDR,ADDRTYPE
  1735.  
  1736.      getnetbyaddr ADDR,ADDRTYPE
  1737.  
  1738.      getprotobynumber NUMBER
  1739.  
  1740.      getservbyport PORT,PROTO
  1741.  
  1742.      getpwent
  1743.  
  1744.      getgrent
  1745.  
  1746.      gethostent
  1747.  
  1748.      getnetent
  1749.  
  1750.      getprotoent
  1751.  
  1752.      getservent
  1753.  
  1754.      setpwent
  1755.  
  1756.      setgrent
  1757.  
  1758.      sethostent STAYOPEN
  1759.  
  1760.      setnetent STAYOPEN
  1761.  
  1762.      setprotoent STAYOPEN
  1763.  
  1764.      setservent STAYOPEN
  1765.  
  1766.      endpwent
  1767.  
  1768.      endgrent
  1769.  
  1770.      endhostent
  1771.  
  1772.      endnetent
  1773.  
  1774.  
  1775.  
  1776.  
  1777.  
  1778.  
  1779.                                                                        PPPPaaaaggggeeee 22227777
  1780.  
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  1787.  
  1788.  
  1789.  
  1790.      endprotoent
  1791.  
  1792.      endservent
  1793.              These routines perform the same functions as their counterparts
  1794.              in the system library.  Within a list context, the return values
  1795.              from the various get routines are as follows:
  1796.  
  1797.                  ($name,$passwd,$uid,$gid,
  1798.                     $quota,$comment,$gcos,$dir,$shell) = getpw*
  1799.                  ($name,$passwd,$gid,$members) = getgr*
  1800.                  ($name,$aliases,$addrtype,$length,@addrs) = gethost*
  1801.                  ($name,$aliases,$addrtype,$net) = getnet*
  1802.                  ($name,$aliases,$proto) = getproto*
  1803.                  ($name,$aliases,$port,$proto) = getserv*
  1804.  
  1805.              (If the entry doesn't exist you get a null list.)
  1806.  
  1807.              Within a scalar context, you get the name, unless the function
  1808.              was a lookup by name, in which case you get the other thing,
  1809.              whatever it is.  (If the entry doesn't exist you get the
  1810.              undefined value.)  For example:
  1811.  
  1812.                  $uid = getpwnam
  1813.                  $name = getpwuid
  1814.                  $name = getpwent
  1815.                  $gid = getgrnam
  1816.                  $name = getgrgid
  1817.                  $name = getgrent
  1818.                  etc.
  1819.  
  1820.              The $members value returned by _g_e_t_g_r*() is a space separated list
  1821.              of the login names of the members of the group.
  1822.  
  1823.              For the _g_e_t_h_o_s_t*() functions, if the h_errno variable is
  1824.              supported in C, it will be returned to you via $? if the function
  1825.              call fails.  The @addrs value returned by a successful call is a
  1826.              list of the raw addresses returned by the corresponding system
  1827.              library call.  In the Internet domain, each address is four bytes
  1828.              long and you can unpack it by saying something like:
  1829.  
  1830.                  ($a,$b,$c,$d) = unpack('C4',$addr[0]);
  1831.  
  1832.  
  1833.      getsockname SOCKET
  1834.              Returns the packed sockaddr address of this end of the SOCKET
  1835.              connection.
  1836.  
  1837.                  use Socket;
  1838.                  $mysockaddr = getsockname(SOCK);
  1839.                  ($port, $myaddr) = unpack_sockaddr_in($mysockaddr);
  1840.  
  1841.  
  1842.  
  1843.  
  1844.  
  1845.                                                                        PPPPaaaaggggeeee 22228888
  1846.  
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  1853.  
  1854.  
  1855.  
  1856.      getsockopt SOCKET,LEVEL,OPTNAME
  1857.              Returns the socket option requested, or undefined if there is an
  1858.              error.
  1859.  
  1860.      glob EXPR
  1861.  
  1862.      glob    Returns the value of EXPR with filename expansions such as a
  1863.              shell would do.  This is the internal function implementing the
  1864.              <*.c> operator, but you can use it directly.  If EXPR is omitted,
  1865.              $_ is used.  The <*.c> operator is discussed in more detail in
  1866.              the section on _I/_O _O_p_e_r_a_t_o_r_s in the _p_e_r_l_o_p manpage.
  1867.  
  1868.      gmtime EXPR
  1869.              Converts a time as returned by the time function to a 9-element
  1870.              array with the time localized for the standard Greenwich time
  1871.              zone.  Typically used as follows:
  1872.  
  1873.                  #  0    1    2     3     4    5     6     7     8
  1874.                  ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
  1875.                                                          gmtime(time);
  1876.  
  1877.              All array elements are numeric, and come straight out of a struct
  1878.              tm.  In particular this means that $mon has the range 0..11 and
  1879.              $wday has the range 0..6 with sunday as day 0.  Also, $year is
  1880.              the number of years since 1900, _n_o_t simply the last two digits of
  1881.              the year.
  1882.  
  1883.              If EXPR is omitted, does gmtime(time()).
  1884.  
  1885.              In a scalar context, returns the _c_t_i_m_e(3) value:
  1886.  
  1887.                  $now_string = gmtime;  # e.g., "Thu Oct 13 04:54:34 1994"
  1888.  
  1889.              Also see the _t_i_m_e_g_m() function provided by the Time::Local
  1890.              module, and the _s_t_r_f_t_i_m_e(3) function available via the POSIX
  1891.              module.
  1892.  
  1893.      goto LABEL
  1894.  
  1895.      goto EXPR
  1896.  
  1897.      goto &NAME
  1898.              The goto-LABEL form finds the statement labeled with LABEL and
  1899.              resumes execution there.  It may not be used to go into any
  1900.              construct that requires initialization, such as a subroutine or a
  1901.              foreach loop.  It also can't be used to go into a construct that
  1902.              is optimized away, or to get out of a block or subroutine given
  1903.              to _s_o_r_t().  It can be used to go almost anywhere else within the
  1904.              dynamic scope, including out of subroutines, but it's usually
  1905.              better to use some other construct such as last or die.  The
  1906.              author of Perl has never felt the need to use this form of goto
  1907.              (in Perl, that is--C is another matter).
  1908.  
  1909.  
  1910.  
  1911.                                                                        PPPPaaaaggggeeee 22229999
  1912.  
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  1919.  
  1920.  
  1921.  
  1922.              The goto-EXPR form expects a label name, whose scope will be
  1923.              resolved dynamically.  This allows for computed gotos per
  1924.              FORTRAN, but isn't necessarily recommended if you're optimizing
  1925.              for maintainability:
  1926.  
  1927.                  goto ("FOO", "BAR", "GLARCH")[$i];
  1928.  
  1929.              The goto-&NAME form is highly magical, and substitutes a call to
  1930.              the named subroutine for the currently running subroutine.  This
  1931.              is used by AUTOLOAD subroutines that wish to load another
  1932.              subroutine and then pretend that the other subroutine had been
  1933.              called in the first place (except that any modifications to @_ in
  1934.              the current subroutine are propagated to the other subroutine.)
  1935.              After the goto, not even _c_a_l_l_e_r() will be able to tell that this
  1936.              routine was called first.
  1937.  
  1938.      grep BLOCK LIST
  1939.  
  1940.      grep EXPR,LIST
  1941.              This is similar in spirit to, but not the same as, _g_r_e_p(1) and
  1942.              its relatives.  In particular, it is not limited to using regular
  1943.              expressions.
  1944.  
  1945.              Evaluates the BLOCK or EXPR for each element of LIST (locally
  1946.              setting $_ to each element) and returns the list value consisting
  1947.              of those elements for which the expression evaluated to TRUE.  In
  1948.              a scalar context, returns the number of times the expression was
  1949.              TRUE.
  1950.  
  1951.                  @foo = grep(!/^#/, @bar);    # weed out comments
  1952.  
  1953.              or equivalently,
  1954.  
  1955.                  @foo = grep {!/^#/} @bar;    # weed out comments
  1956.  
  1957.              Note that, because $_ is a reference into the list value, it can
  1958.              be used to modify the elements of the array.  While this is
  1959.              useful and supported, it can cause bizarre results if the LIST is
  1960.              not a named array.  Similarly, grep returns aliases into the
  1961.              original list, much like the way that the section on _F_o_r_e_a_c_h
  1962.              _L_o_o_p_s's index variable aliases the list elements.  That is,
  1963.              modifying an element of a list returned by grep (for example, in
  1964.              a foreach, map or another grep) actually modifies the element in
  1965.              the original list.
  1966.  
  1967.              See also the map entry elsewhere in this document for an array
  1968.              composed of the results of the BLOCK or EXPR.
  1969.  
  1970.      hex EXPR
  1971.  
  1972.  
  1973.  
  1974.  
  1975.  
  1976.  
  1977.                                                                        PPPPaaaaggggeeee 33330000
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  1985.  
  1986.  
  1987.  
  1988.      hex     Interprets EXPR as a hex string and returns the corresponding
  1989.              value.  (To convert strings that might start with either 0 or 0x
  1990.              see the oct entry elsewhere in this document .)  If EXPR is
  1991.              omitted, uses $_.
  1992.  
  1993.                  print hex '0xAf'; # prints '175'
  1994.                  print hex 'aF';   # same
  1995.  
  1996.  
  1997.      import  There is no builtin _i_m_p_o_r_t() function.  It is merely an ordinary
  1998.              method (subroutine) defined (or inherited) by modules that wish
  1999.              to export names to another module.  The _u_s_e() function calls the
  2000.              _i_m_p_o_r_t() method for the package used.  See also the use() entry
  2001.              elsewhere in this document the _p_e_r_l_m_o_d manpage, and the _E_x_p_o_r_t_e_r
  2002.              manpage.
  2003.  
  2004.      index STR,SUBSTR,POSITION
  2005.  
  2006.      index STR,SUBSTR
  2007.              Returns the position of the first occurrence of SUBSTR in STR at
  2008.              or after POSITION.  If POSITION is omitted, starts searching from
  2009.              the beginning of the string.  The return value is based at 0 (or
  2010.              whatever you've set the $[ variable to--but don't do that).  If
  2011.              the substring is not found, returns one less than the base,
  2012.              ordinarily -1.
  2013.  
  2014.      int EXPR
  2015.  
  2016.      int     Returns the integer portion of EXPR.  If EXPR is omitted, uses
  2017.              $_.
  2018.  
  2019.      ioctl FILEHANDLE,FUNCTION,SCALAR
  2020.              Implements the _i_o_c_t_l(2) function.  You'll probably have to say
  2021.  
  2022.                  require "ioctl.ph"; # probably in /usr/local/lib/perl/ioctl.ph
  2023.  
  2024.              first to get the correct function definitions.  If _i_o_c_t_l._p_h
  2025.              doesn't exist or doesn't have the correct definitions you'll have
  2026.              to roll your own, based on your C header files such as
  2027.              <_s_y_s/_i_o_c_t_l._h>.  (There is a Perl script called hhhh2222pppphhhh that comes
  2028.              with the Perl kit which may help you in this, but it's
  2029.              nontrivial.)  SCALAR will be read and/or written depending on the
  2030.              FUNCTION--a pointer to the string value of SCALAR will be passed
  2031.              as the third argument of the actual ioctl call.  (If SCALAR has
  2032.              no string value but does have a numeric value, that value will be
  2033.              passed rather than a pointer to the string value.  To guarantee
  2034.              this to be TRUE, add a 0 to the scalar before using it.)  The
  2035.              _p_a_c_k() and _u_n_p_a_c_k() functions are useful for manipulating the
  2036.              values of structures used by _i_o_c_t_l().  The following example sets
  2037.              the erase character to DEL.
  2038.  
  2039.  
  2040.  
  2041.  
  2042.  
  2043.                                                                        PPPPaaaaggggeeee 33331111
  2044.  
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  2051.  
  2052.  
  2053.  
  2054.                  require 'ioctl.ph';
  2055.                  $getp = &TIOCGETP;
  2056.                  die "NO TIOCGETP" if $@ || !$getp;
  2057.                  $sgttyb_t = "ccccs";                # 4 chars and a short
  2058.                  if (ioctl(STDIN,$getp,$sgttyb)) {
  2059.                      @ary = unpack($sgttyb_t,$sgttyb);
  2060.                      $ary[2] = 127;
  2061.                      $sgttyb = pack($sgttyb_t,@ary);
  2062.                      ioctl(STDIN,&TIOCSETP,$sgttyb)
  2063.                          || die "Can't ioctl: $!";
  2064.                  }
  2065.  
  2066.              The return value of ioctl (and fcntl) is as follows:
  2067.  
  2068.                      if OS returns:          then Perl returns:
  2069.                          -1                    undefined value
  2070.                           0                  string "0 but true"
  2071.                      anything else               that number
  2072.  
  2073.              Thus Perl returns TRUE on success and FALSE on failure, yet you
  2074.              can still easily determine the actual value returned by the
  2075.              operating system:
  2076.  
  2077.                  ($retval = ioctl(...)) || ($retval = -1);
  2078.                  printf "System returned %d\n", $retval;
  2079.  
  2080.  
  2081.      join EXPR,LIST
  2082.              Joins the separate strings of LIST into a single string with
  2083.              fields separated by the value of EXPR, and returns the string.
  2084.              Example:
  2085.  
  2086.                  $_ = join(':', $login,$passwd,$uid,$gid,$gcos,$home,$shell);
  2087.  
  2088.              See the split entry in the _p_e_r_l_f_u_n_c manpage.
  2089.  
  2090.      keys HASH
  2091.              Returns a normal array consisting of all the keys of the named
  2092.              hash.  (In a scalar context, returns the number of keys.)  The
  2093.              keys are returned in an apparently random order, but it is the
  2094.              same order as either the _v_a_l_u_e_s() or _e_a_c_h() function produces
  2095.              (given that the hash has not been modified).  As a side effect,
  2096.              it resets HASH's iterator.
  2097.  
  2098.              Here is yet another way to print your environment:
  2099.  
  2100.                  @keys = keys %ENV;
  2101.                  @values = values %ENV;
  2102.                  while ($#keys >= 0) {
  2103.                      print pop(@keys), '=', pop(@values), "\n";
  2104.                  }
  2105.  
  2106.  
  2107.  
  2108.  
  2109.                                                                        PPPPaaaaggggeeee 33332222
  2110.  
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  2117.  
  2118.  
  2119.  
  2120.              or how about sorted by key:
  2121.  
  2122.                  foreach $key (sort(keys %ENV)) {
  2123.                      print $key, '=', $ENV{$key}, "\n";
  2124.                  }
  2125.  
  2126.              To sort an array by value, you'll need to use a sort function.
  2127.              Here's a descending numeric sort of a hash by its values:
  2128.  
  2129.                  foreach $key (sort { $hash{$b} <=> $hash{$a} } keys %hash)) {
  2130.                      printf "%4d %s\n", $hash{$key}, $key;
  2131.                  }
  2132.  
  2133.              As an lvalue keys allows you to increase the number of hash
  2134.              buckets allocated for the given hash.  This can gain you a
  2135.              measure of efficiency if you know the hash is going to get big.
  2136.              (This is similar to pre-extending an array by assigning a larger
  2137.              number to $#array.)  If you say
  2138.  
  2139.                  keys %hash = 200;
  2140.  
  2141.              then %hash will have at least 200 buckets allocated for it.
  2142.              These buckets will be retained even if you do %hash = (), use
  2143.              undef %hash if you want to free the storage while %hash is still
  2144.              in scope.  You can't shrink the number of buckets allocated for
  2145.              the hash using keys in this way (but you needn't worry about
  2146.              doing this by accident, as trying has no effect).
  2147.  
  2148.      kill LIST
  2149.              Sends a signal to a list of processes.  The first element of the
  2150.              list must be the signal to send.  Returns the number of processes
  2151.              successfully signaled.
  2152.  
  2153.                  $cnt = kill 1, $child1, $child2;
  2154.                  kill 9, @goners;
  2155.  
  2156.              Unlike in the shell, in Perl if the _S_I_G_N_A_L is negative, it kills
  2157.              process groups instead of processes.  (On System V, a negative
  2158.              _P_R_O_C_E_S_S number will also kill process groups, but that's not
  2159.              portable.)  That means you usually want to use positive not
  2160.              negative signals.  You may also use a signal name in quotes.  See
  2161.              the section on _S_i_g_n_a_l_s in the _p_e_r_l_i_p_c manpage for details.
  2162.  
  2163.      last LABEL
  2164.  
  2165.      last    The last command is like the break statement in C (as used in
  2166.              loops); it immediately exits the loop in question.  If the LABEL
  2167.              is omitted, the command refers to the innermost enclosing loop.
  2168.              The continue block, if any, is not executed:
  2169.  
  2170.  
  2171.  
  2172.  
  2173.  
  2174.  
  2175.                                                                        PPPPaaaaggggeeee 33333333
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  2183.  
  2184.  
  2185.  
  2186.                  LINE: while (<STDIN>) {
  2187.                      last LINE if /^$/;      # exit when done with header
  2188.                      ...
  2189.                  }
  2190.  
  2191.  
  2192.      lc EXPR
  2193.  
  2194.      lc      Returns an lowercased version of EXPR.  This is the internal
  2195.              function implementing the \L escape in double-quoted strings.
  2196.              Respects current LC_CTYPE locale if use locale in force.  See the
  2197.              _p_e_r_l_l_o_c_a_l_e manpage.
  2198.  
  2199.              If EXPR is omitted, uses $_.
  2200.  
  2201.      lcfirst EXPR
  2202.  
  2203.      lcfirst Returns the value of EXPR with the first character lowercased.
  2204.              This is the internal function implementing the \l escape in
  2205.              double-quoted strings.  Respects current LC_CTYPE locale if use
  2206.              locale in force.  See the _p_e_r_l_l_o_c_a_l_e manpage.
  2207.  
  2208.              If EXPR is omitted, uses $_.
  2209.  
  2210.      length EXPR
  2211.  
  2212.      length  Returns the length in characters of the value of EXPR.  If EXPR
  2213.              is omitted, returns length of $_.
  2214.  
  2215.      link OLDFILE,NEWFILE
  2216.              Creates a new filename linked to the old filename.  Returns 1 for
  2217.              success, 0 otherwise.
  2218.  
  2219.      listen SOCKET,QUEUESIZE
  2220.              Does the same thing that the listen system call does.  Returns
  2221.              TRUE if it succeeded, FALSE otherwise.  See example in the
  2222.              section on _S_o_c_k_e_t_s: _C_l_i_e_n_t/_S_e_r_v_e_r _C_o_m_m_u_n_i_c_a_t_i_o_n in the _p_e_r_l_i_p_c
  2223.              manpage.
  2224.  
  2225.      local EXPR
  2226.              A local modifies the listed variables to be local to the
  2227.              enclosing block, subroutine, eval{}, or do.  If more than one
  2228.              value is listed, the list must be placed in parentheses.  See the
  2229.              section on _T_e_m_p_o_r_a_r_y _V_a_l_u_e_s _v_i_a _l_o_c_a_l() in the _p_e_r_l_s_u_b manpage
  2230.              for details, including issues with tied arrays and hashes.
  2231.  
  2232.              But you really probably want to be using _m_y() instead, because
  2233.              _l_o_c_a_l() isn't what most people think of as "local").  See the
  2234.              section on _P_r_i_v_a_t_e _V_a_r_i_a_b_l_e_s _v_i_a _m_y() in the _p_e_r_l_s_u_b manpage for
  2235.              details.
  2236.  
  2237.  
  2238.  
  2239.  
  2240.  
  2241.                                                                        PPPPaaaaggggeeee 33334444
  2242.  
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  2249.  
  2250.  
  2251.  
  2252.      localtime EXPR
  2253.              Converts a time as returned by the time function to a 9-element
  2254.              array with the time analyzed for the local time zone.  Typically
  2255.              used as follows:
  2256.  
  2257.                  #  0    1    2     3     4    5     6     7     8
  2258.                  ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) =
  2259.                                                              localtime(time);
  2260.  
  2261.              All array elements are numeric, and come straight out of a struct
  2262.              tm.  In particular this means that $mon has the range 0..11 and
  2263.              $wday has the range 0..6 with sunday as day 0.  Also, $year is
  2264.              the number of years since 1900, that is, $year is 123 in year
  2265.              2023.
  2266.  
  2267.              If EXPR is omitted, uses the current time (localtime(time)).
  2268.  
  2269.              In a scalar context, returns the _c_t_i_m_e(3) value:
  2270.  
  2271.                  $now_string = localtime;  # e.g., "Thu Oct 13 04:54:34 1994"
  2272.  
  2273.              This scalar value is nnnnooootttt locale dependent, see the _p_e_r_l_l_o_c_a_l_e
  2274.              manpage, but instead a Perl builtin.  Also see the Time::Local
  2275.              module, and the _s_t_r_f_t_i_m_e(3) and _m_k_t_i_m_e(3) function available via
  2276.              the POSIX module.
  2277.  
  2278.      log EXPR
  2279.  
  2280.      log     Returns logarithm (base _e) of EXPR.  If EXPR is omitted, returns
  2281.              log of $_.
  2282.  
  2283.      lstat FILEHANDLE
  2284.  
  2285.      lstat EXPR
  2286.  
  2287.      lstat   Does the same thing as the _s_t_a_t() function, but stats a symbolic
  2288.              link instead of the file the symbolic link points to.  If
  2289.              symbolic links are unimplemented on your system, a normal _s_t_a_t()
  2290.              is done.
  2291.  
  2292.              If EXPR is omitted, stats $_.
  2293.  
  2294.      m//     The match operator.  See the _p_e_r_l_o_p manpage.
  2295.  
  2296.      map BLOCK LIST
  2297.  
  2298.      map EXPR,LIST
  2299.              Evaluates the BLOCK or EXPR for each element of LIST (locally
  2300.              setting $_ to each element) and returns the list value composed
  2301.              of the results of each such evaluation.  Evaluates BLOCK or EXPR
  2302.              in a list context, so each element of LIST may produce zero, one,
  2303.              or more elements in the returned value.
  2304.  
  2305.  
  2306.  
  2307.                                                                        PPPPaaaaggggeeee 33335555
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  2315.  
  2316.  
  2317.  
  2318.                  @chars = map(chr, @nums);
  2319.  
  2320.              translates a list of numbers to the corresponding characters.
  2321.              And
  2322.  
  2323.                  %hash = map { getkey($_) => $_ } @array;
  2324.  
  2325.              is just a funny way to write
  2326.  
  2327.                  %hash = ();
  2328.                  foreach $_ (@array) {
  2329.                      $hash{getkey($_)} = $_;
  2330.                  }
  2331.  
  2332.              Note that, because $_ is a reference into the list value, it can
  2333.              be used to modify the elements of the array.  While this is
  2334.              useful and supported, it can cause bizarre results if the LIST is
  2335.              not a named array.  See also the grep entry elsewhere in this
  2336.              document for an array composed of those items of the original
  2337.              list for which the BLOCK or EXPR evaluates to true.
  2338.  
  2339.      mkdir FILENAME,MODE
  2340.              Creates the directory specified by FILENAME, with permissions
  2341.              specified by MODE (as modified by umask).  If it succeeds it
  2342.              returns 1, otherwise it returns 0 and sets $! (errno).
  2343.  
  2344.      msgctl ID,CMD,ARG
  2345.              Calls the System V IPC function _m_s_g_c_t_l(2).  If CMD is &IPC_STAT,
  2346.              then ARG must be a variable which will hold the returned msqid_ds
  2347.              structure.  Returns like ioctl: the undefined value for error, "0
  2348.              but true" for zero, or the actual return value otherwise.
  2349.  
  2350.      msgget KEY,FLAGS
  2351.              Calls the System V IPC function _m_s_g_g_e_t(2).  Returns the message
  2352.              queue id, or the undefined value if there is an error.
  2353.  
  2354.      msgsnd ID,MSG,FLAGS
  2355.              Calls the System V IPC function msgsnd to send the message MSG to
  2356.              the message queue ID.  MSG must begin with the long integer
  2357.              message type, which may be created with pack("l", $type).
  2358.              Returns TRUE if successful, or FALSE if there is an error.
  2359.  
  2360.      msgrcv ID,VAR,SIZE,TYPE,FLAGS
  2361.              Calls the System V IPC function msgrcv to receive a message from
  2362.              message queue ID into variable VAR with a maximum message size of
  2363.              SIZE.  Note that if a message is received, the message type will
  2364.              be the first thing in VAR, and the maximum length of VAR is SIZE
  2365.              plus the size of the message type.  Returns TRUE if successful,
  2366.              or FALSE if there is an error.
  2367.  
  2368.  
  2369.  
  2370.  
  2371.  
  2372.  
  2373.                                                                        PPPPaaaaggggeeee 33336666
  2374.  
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  2381.  
  2382.  
  2383.  
  2384.      my EXPR A "my" declares the listed variables to be local (lexically) to
  2385.              the enclosing block, subroutine, eval, or do/require/use'd file.
  2386.              If more than one value is listed, the list must be placed in
  2387.              parentheses.  See the section on _P_r_i_v_a_t_e _V_a_r_i_a_b_l_e_s _v_i_a _m_y() in
  2388.              the _p_e_r_l_s_u_b manpage for details.
  2389.  
  2390.      next LABEL
  2391.  
  2392.      next    The next command is like the continue statement in C; it starts
  2393.              the next iteration of the loop:
  2394.  
  2395.                  LINE: while (<STDIN>) {
  2396.                      next LINE if /^#/;      # discard comments
  2397.                      ...
  2398.                  }
  2399.  
  2400.              Note that if there were a continue block on the above, it would
  2401.              get executed even on discarded lines.  If the LABEL is omitted,
  2402.              the command refers to the innermost enclosing loop.
  2403.  
  2404.      no Module LIST
  2405.              See the "use" function, which "no" is the opposite of.
  2406.  
  2407.      oct EXPR
  2408.  
  2409.      oct     Interprets EXPR as an octal string and returns the corresponding
  2410.              value.  (If EXPR happens to start off with 0x, interprets it as a
  2411.              hex string instead.)  The following will handle decimal, octal,
  2412.              and hex in the standard Perl or C notation:
  2413.  
  2414.                  $val = oct($val) if $val =~ /^0/;
  2415.  
  2416.              If EXPR is omitted, uses $_.  This function is commonly used when
  2417.              a string such as "644" needs to be converted into a file mode,
  2418.              for example. (Although perl will automatically convert strings
  2419.              into numbers as needed, this automatic conversion assumes base
  2420.              10.)
  2421.  
  2422.      open FILEHANDLE,EXPR
  2423.  
  2424.      open FILEHANDLE
  2425.              Opens the file whose filename is given by EXPR, and associates it
  2426.              with FILEHANDLE.  If FILEHANDLE is an expression, its value is
  2427.              used as the name of the real filehandle wanted.  If EXPR is
  2428.              omitted, the scalar variable of the same name as the FILEHANDLE
  2429.              contains the filename.  (Note that lexical variables--those
  2430.              declared with my--will not work for this purpose; so if you're
  2431.              using my, specify EXPR in your call to open.)
  2432.  
  2433.              If the filename begins with '<' or nothing, the file is opened
  2434.              for input.  If the filename begins with '>', the file is
  2435.              truncated and opened for output.  If the filename begins with
  2436.  
  2437.  
  2438.  
  2439.                                                                        PPPPaaaaggggeeee 33337777
  2440.  
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  2447.  
  2448.  
  2449.  
  2450.              '>>', the file is opened for appending.  You can put a '+' in
  2451.              front of the '>' or '<' to indicate that you want both read and
  2452.              write access to the file; thus '+<' is almost always preferred
  2453.              for read/write updates--the '+>' mode would clobber the file
  2454.              first.  The prefix and the filename may be separated with spaces.
  2455.              These various prefixes correspond to the _f_o_p_e_n(3) modes of 'r',
  2456.              'r+', 'w', 'w+', 'a', and 'a+'.
  2457.  
  2458.              If the filename begins with "|", the filename is interpreted as a
  2459.              command to which output is to be piped, and if the filename ends
  2460.              with a "|", the filename is interpreted See the section on _U_s_i_n_g
  2461.              _o_p_e_n() _f_o_r _I_P_C in the _p_e_r_l_i_p_c manpage for more examples of this.
  2462.              as command which pipes input to us.  (You may not have a raw
  2463.              _o_p_e_n() to a command that pipes both in _a_n_d out, but see the
  2464.              _I_P_C::_O_p_e_n_2 manpage, the _I_P_C::_O_p_e_n_3 manpage, and the section on
  2465.              _B_i_d_i_r_e_c_t_i_o_n_a_l _C_o_m_m_u_n_i_c_a_t_i_o_n in the _p_e_r_l_i_p_c manpage for
  2466.              alternatives.)
  2467.  
  2468.              Opening '-' opens STDIN and opening '>-' opens STDOUT.  Open
  2469.              returns nonzero upon success, the undefined value otherwise.  If
  2470.              the open involved a pipe, the return value happens to be the pid
  2471.              of the subprocess.
  2472.  
  2473.              If you're unfortunate enough to be running Perl on a system that
  2474.              distinguishes between text files and binary files (modern
  2475.              operating systems don't care), then you should check out the
  2476.              binmode entry elsewhere in this document for tips for dealing
  2477.              with this.  The key distinction between systems that need binmode
  2478.              and those that don't is their text file formats.  Systems like
  2479.              Unix and Plan9 that delimit lines with a single character, and
  2480.              that encode that character in C as '\n', do not need binmode.
  2481.              The rest need it.
  2482.  
  2483.              When opening a file, it's usually a bad idea to continue normal
  2484.              execution if the request failed, so open is frequently used in
  2485.              connection with die. Even if die won't do what you want (say, in
  2486.              a CGI script, where you want to make a nicely formatted error
  2487.              message (but there are modules which can help with that problem))
  2488.              you should always check the return value from opening a file. The
  2489.              infrequent exception is when working with an unopened filehandle
  2490.              is actually what you want to do.
  2491.  
  2492.              Examples:
  2493.  
  2494.                  $ARTICLE = 100;
  2495.                  open ARTICLE or die "Can't find article $ARTICLE: $!\n";
  2496.                  while (<ARTICLE>) {...
  2497.  
  2498.                  open(LOG, '>>/usr/spool/news/twitlog'); # (log is reserved)
  2499.                  # if the open fails, output is discarded
  2500.  
  2501.  
  2502.  
  2503.  
  2504.  
  2505.                                                                        PPPPaaaaggggeeee 33338888
  2506.  
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  2513.  
  2514.  
  2515.  
  2516.                  open(DBASE, '+<dbase.mine')             # open for update
  2517.                      or die "Can't open 'dbase.mine' for update: $!";
  2518.  
  2519.                  open(ARTICLE, "caesar <$article |")     # decrypt article
  2520.                      or die "Can't start caesar: $!";
  2521.  
  2522.                  open(EXTRACT, "|sort >/tmp/Tmp$$")      # $$ is our process id
  2523.                      or die "Can't start sort: $!";
  2524.  
  2525.                  # process argument list of files along with any includes
  2526.  
  2527.                  foreach $file (@ARGV) {
  2528.                      process($file, 'fh00');
  2529.                  }
  2530.  
  2531.                  sub process {
  2532.                      local($filename, $input) = @_;
  2533.                      $input++;               # this is a string increment
  2534.                      unless (open($input, $filename)) {
  2535.                          print STDERR "Can't open $filename: $!\n";
  2536.                          return;
  2537.                      }
  2538.  
  2539.                      while (<$input>) {              # note use of indirection
  2540.                          if (/^#include "(.*)"/) {
  2541.                              process($1, $input);
  2542.                              next;
  2543.                          }
  2544.                          ...         # whatever
  2545.                      }
  2546.                  }
  2547.  
  2548.              You may also, in the Bourne shell tradition, specify an EXPR
  2549.              beginning with ">&", in which case the rest of the string is
  2550.              interpreted as the name of a filehandle (or file descriptor, if
  2551.              numeric) which is to be duped and opened.  You may use & after >,
  2552.              >>, <, +>, +>>, and +<.  The mode you specify should match the
  2553.              mode of the original filehandle.  (Duping a filehandle does not
  2554.              take into account any existing contents of stdio buffers.)  Here
  2555.              is a script that saves, redirects, and restores STDOUT and
  2556.              STDERR:
  2557.  
  2558.                  #!/usr/bin/perl
  2559.                  open(SAVEOUT, ">&STDOUT");
  2560.                  open(SAVEERR, ">&STDERR");
  2561.  
  2562.                  open(STDOUT, ">foo.out") || die "Can't redirect stdout";
  2563.                  open(STDERR, ">&STDOUT") || die "Can't dup stdout";
  2564.  
  2565.                  select(STDERR); $| = 1;     # make unbuffered
  2566.                  select(STDOUT); $| = 1;     # make unbuffered
  2567.  
  2568.  
  2569.  
  2570.  
  2571.                                                                        PPPPaaaaggggeeee 33339999
  2572.  
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  2579.  
  2580.  
  2581.  
  2582.                  print STDOUT "stdout 1\n";  # this works for
  2583.                  print STDERR "stderr 1\n";  # subprocesses too
  2584.  
  2585.                  close(STDOUT);
  2586.                  close(STDERR);
  2587.  
  2588.                  open(STDOUT, ">&SAVEOUT");
  2589.                  open(STDERR, ">&SAVEERR");
  2590.  
  2591.                  print STDOUT "stdout 2\n";
  2592.                  print STDERR "stderr 2\n";
  2593.  
  2594.              If you specify "<&=N", where N is a number, then Perl will do an
  2595.              equivalent of C's _f_d_o_p_e_n() of that file descriptor; this is more
  2596.              parsimonious of file descriptors.  For example:
  2597.  
  2598.                  open(FILEHANDLE, "<&=$fd")
  2599.  
  2600.              If you open a pipe on the command "-", i.e., either "|-" or "-|",
  2601.              then there is an implicit fork done, and the return value of open
  2602.              is the pid of the child within the parent process, and 0 within
  2603.              the child process.  (Use defined($pid) to determine whether the
  2604.              open was successful.)  The filehandle behaves normally for the
  2605.              parent, but i/o to that filehandle is piped from/to the
  2606.              STDOUT/STDIN of the child process.  In the child process the
  2607.              filehandle isn't opened--i/o happens from/to the new STDOUT or
  2608.              STDIN.  Typically this is used like the normal piped open when
  2609.              you want to exercise more control over just how the pipe command
  2610.              gets executed, such as when you are running setuid, and don't
  2611.              want to have to scan shell commands for metacharacters.  The
  2612.              following pairs are more or less equivalent:
  2613.  
  2614.                  open(FOO, "|tr '[a-z]' '[A-Z]'");
  2615.                  open(FOO, "|-") || exec 'tr', '[a-z]', '[A-Z]';
  2616.  
  2617.                  open(FOO, "cat -n '$file'|");
  2618.                  open(FOO, "-|") || exec 'cat', '-n', $file;
  2619.  
  2620.              See the section on _S_a_f_e _P_i_p_e _O_p_e_n_s in the _p_e_r_l_i_p_c manpage for
  2621.              more examples of this.
  2622.  
  2623.              NOTE: On any operation which may do a fork, unflushed buffers
  2624.              remain unflushed in both processes, which means you may need to
  2625.              set $| to avoid duplicate output.
  2626.  
  2627.              Closing any piped filehandle causes the parent process to wait
  2628.              for the child to finish, and returns the status value in $?.
  2629.  
  2630.              Using the constructor from the IO::Handle package (or one of its
  2631.              subclasses, such as IO::File or IO::Socket), you can generate
  2632.              anonymous filehandles which have the scope of whatever variables
  2633.              hold references to them, and automatically close whenever and
  2634.  
  2635.  
  2636.  
  2637.                                                                        PPPPaaaaggggeeee 44440000
  2638.  
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  2645.  
  2646.  
  2647.  
  2648.              however you leave that scope:
  2649.  
  2650.                  use IO::File;
  2651.                  ...
  2652.                  sub read_myfile_munged {
  2653.                      my $ALL = shift;
  2654.                      my $handle = new IO::File;
  2655.                      open($handle, "myfile") or die "myfile: $!";
  2656.                      $first = <$handle>
  2657.                          or return ();     # Automatically closed here.
  2658.                      mung $first or die "mung failed";       # Or here.
  2659.                      return $first, <$handle> if $ALL;       # Or here.
  2660.                      $first;                                 # Or here.
  2661.                  }
  2662.  
  2663.              The filename that is passed to open will have leading and
  2664.              trailing whitespace deleted.  To open a file with arbitrary weird
  2665.              characters in it, it's necessary to protect any leading and
  2666.              trailing whitespace thusly:
  2667.  
  2668.                  $file =~ s#^(\s)#./$1#;
  2669.                  open(FOO, "< $file\0");
  2670.  
  2671.              If you want a "real" C _o_p_e_n() (see the _o_p_e_n(_2) manpage on your
  2672.              system), then you should use the _s_y_s_o_p_e_n() function.  This is
  2673.              another way to protect your filenames from interpretation.  For
  2674.              example:
  2675.  
  2676.                  use IO::Handle;
  2677.                  sysopen(HANDLE, $path, O_RDWR|O_CREAT|O_EXCL, 0700)
  2678.                      or die "sysopen $path: $!";
  2679.                  HANDLE->autoflush(1);
  2680.                  HANDLE->print("stuff $$\n");
  2681.                  seek(HANDLE, 0, 0);
  2682.                  print "File contains: ", <HANDLE>;
  2683.  
  2684.              See the seek() entry elsewhere in this document for some details
  2685.              about mixing reading and writing.
  2686.  
  2687.      opendir DIRHANDLE,EXPR
  2688.              Opens a directory named EXPR for processing by _r_e_a_d_d_i_r(),
  2689.              _t_e_l_l_d_i_r(), _s_e_e_k_d_i_r(), _r_e_w_i_n_d_d_i_r(), and _c_l_o_s_e_d_i_r().  Returns TRUE
  2690.              if successful.  DIRHANDLEs have their own namespace separate from
  2691.              FILEHANDLEs.
  2692.  
  2693.      ord EXPR
  2694.  
  2695.      ord     Returns the numeric ascii value of the first character of EXPR.
  2696.              If EXPR is omitted, uses $_.  For the reverse, see the chr entry
  2697.              elsewhere in this document .
  2698.  
  2699.  
  2700.  
  2701.  
  2702.  
  2703.                                                                        PPPPaaaaggggeeee 44441111
  2704.  
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  2711.  
  2712.  
  2713.  
  2714.      pack TEMPLATE,LIST
  2715.              Takes an array or list of values and packs it into a binary
  2716.              structure, returning the string containing the structure.  The
  2717.              TEMPLATE is a sequence of characters that give the order and type
  2718.              of values, as follows:
  2719.  
  2720.                  A   An ascii string, will be space padded.
  2721.                  a   An ascii string, will be null padded.
  2722.                  b   A bit string (ascending bit order, like vec()).
  2723.                  B   A bit string (descending bit order).
  2724.                  h   A hex string (low nybble first).
  2725.                  H   A hex string (high nybble first).
  2726.  
  2727.                  c   A signed char value.
  2728.                  C   An unsigned char value.
  2729.  
  2730.                  s   A signed short value.
  2731.                  S   An unsigned short value.
  2732.                        (This 'short' is _exactly_ 16 bits, which may differ from
  2733.                         what a local C compiler calls 'short'.)
  2734.  
  2735.                  i   A signed integer value.
  2736.                  I   An unsigned integer value.
  2737.                        (This 'integer' is _at_least_ 32 bits wide.  Its exact size
  2738.                         depends on what a local C compiler calls 'int', and may
  2739.                         even be larger than the 'long' described in the next item.)
  2740.  
  2741.                  l   A signed long value.
  2742.                  L   An unsigned long value.
  2743.                        (This 'long' is _exactly_ 32 bits, which may differ from
  2744.                         what a local C compiler calls 'long'.)
  2745.  
  2746.                  n   A short in "network" (big-endian) order.
  2747.                  N   A long in "network" (big-endian) order.
  2748.                  v   A short in "VAX" (little-endian) order.
  2749.                  V   A long in "VAX" (little-endian) order.
  2750.                        (These 'shorts' and 'longs' are _exactly_ 16 bits and
  2751.                         _exactly_ 32 bits, respectively.)
  2752.  
  2753.                  f   A single-precision float in the native format.
  2754.                  d   A double-precision float in the native format.
  2755.  
  2756.                  p   A pointer to a null-terminated string.
  2757.                  P   A pointer to a structure (fixed-length string).
  2758.  
  2759.                  u   A uuencoded string.
  2760.  
  2761.                  w   A BER compressed integer.  Its bytes represent an unsigned
  2762.                      integer in base 128, most significant digit first, with as few
  2763.                      digits as possible.  Bit eight (the high bit) is set on each
  2764.                      byte except the last.
  2765.  
  2766.  
  2767.  
  2768.  
  2769.                                                                        PPPPaaaaggggeeee 44442222
  2770.  
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  2777.  
  2778.  
  2779.  
  2780.                  x   A null byte.
  2781.                  X   Back up a byte.
  2782.                  @   Null fill to absolute position.
  2783.  
  2784.              Each letter may optionally be followed by a number which gives a
  2785.              repeat count.  With all types except "a", "A", "b", "B", "h",
  2786.              "H", and "P" the pack function will gobble up that many values
  2787.              from the LIST.  A * for the repeat count means to use however
  2788.              many items are left.  The "a" and "A" types gobble just one
  2789.              value, but pack it as a string of length count, padding with
  2790.              nulls or spaces as necessary.  (When unpacking, "A" strips
  2791.              trailing spaces and nulls, but "a" does not.)  Likewise, the "b"
  2792.              and "B" fields pack a string that many bits long.  The "h" and
  2793.              "H" fields pack a string that many nybbles long.  The "p" type
  2794.              packs a pointer to a null- terminated string.  You are
  2795.              responsible for ensuring the string is not a temporary value
  2796.              (which can potentially get deallocated before you get around to
  2797.              using the packed result).  The "P" packs a pointer to a structure
  2798.              of the size indicated by the length. A NULL pointer is created if
  2799.              the corresponding value for "p" or "P" is undef.  Real numbers
  2800.              (floats and doubles) are in the native machine format only; due
  2801.              to the multiplicity of floating formats around, and the lack of a
  2802.              standard "network" representation, no facility for interchange
  2803.              has been made.  This means that packed floating point data
  2804.              written on one machine may not be readable on another - even if
  2805.              both use IEEE floating point arithmetic (as the endian-ness of
  2806.              the memory representation is not part of the IEEE spec).  Note
  2807.              that Perl uses doubles internally for all numeric calculation,
  2808.              and converting from double into float and thence back to double
  2809.              again will lose precision (i.e., unpack("f", pack("f", $foo))
  2810.              will not in general equal $foo).
  2811.  
  2812.              Examples:
  2813.  
  2814.                  $foo = pack("cccc",65,66,67,68);
  2815.                  # foo eq "ABCD"
  2816.                  $foo = pack("c4",65,66,67,68);
  2817.                  # same thing
  2818.  
  2819.                  $foo = pack("ccxxcc",65,66,67,68);
  2820.                  # foo eq "AB\0\0CD"
  2821.  
  2822.                  $foo = pack("s2",1,2);
  2823.                  # "\1\0\2\0" on little-endian
  2824.                  # "\0\1\0\2" on big-endian
  2825.  
  2826.                  $foo = pack("a4","abcd","x","y","z");
  2827.                  # "abcd"
  2828.  
  2829.                  $foo = pack("aaaa","abcd","x","y","z");
  2830.                  # "axyz"
  2831.  
  2832.  
  2833.  
  2834.  
  2835.                                                                        PPPPaaaaggggeeee 44443333
  2836.  
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  2843.  
  2844.  
  2845.  
  2846.                  $foo = pack("a14","abcdefg");
  2847.                  # "abcdefg\0\0\0\0\0\0\0"
  2848.  
  2849.                  $foo = pack("i9pl", gmtime);
  2850.                  # a real struct tm (on my system anyway)
  2851.  
  2852.                  sub bintodec {
  2853.                      unpack("N", pack("B32", substr("0" x 32 . shift, -32)));
  2854.                  }
  2855.  
  2856.              The same template may generally also be used in the unpack
  2857.              function.
  2858.  
  2859.      package NAMESPACE
  2860.              Declares the compilation unit as being in the given namespace.
  2861.              The scope of the package declaration is from the declaration
  2862.              itself through the end of the enclosing block (the same scope as
  2863.              the _l_o_c_a_l() operator).  All further unqualified dynamic
  2864.              identifiers will be in this namespace.  A package statement
  2865.              affects only dynamic variables--including those you've used
  2866.              _l_o_c_a_l() on--but _n_o_t lexical variables created with _m_y().
  2867.              Typically it would be the first declaration in a file to be
  2868.              included by the require or use operator.  You can switch into a
  2869.              package in more than one place; it influences merely which symbol
  2870.              table is used by the compiler for the rest of that block.  You
  2871.              can refer to variables and filehandles in other packages by
  2872.              prefixing the identifier with the package name and a double
  2873.              colon:  $Package::Variable.  If the package name is null, the
  2874.              main package as assumed.  That is, $::sail is equivalent to
  2875.              $main::sail.
  2876.  
  2877.              See the section on _P_a_c_k_a_g_e_s in the _p_e_r_l_m_o_d manpage for more
  2878.              information about packages, modules, and classes.  See the
  2879.              _p_e_r_l_s_u_b manpage for other scoping issues.
  2880.  
  2881.      pipe READHANDLE,WRITEHANDLE
  2882.              Opens a pair of connected pipes like the corresponding system
  2883.              call.  Note that if you set up a loop of piped processes,
  2884.              deadlock can occur unless you are very careful.  In addition,
  2885.              note that Perl's pipes use stdio buffering, so you may need to
  2886.              set $| to flush your WRITEHANDLE after each command, depending on
  2887.              the application.
  2888.  
  2889.              See the _I_P_C::_O_p_e_n_2 manpage, the _I_P_C::_O_p_e_n_3 manpage, and the
  2890.              section on _B_i_d_i_r_e_c_t_i_o_n_a_l _C_o_m_m_u_n_i_c_a_t_i_o_n in the _p_e_r_l_i_p_c manpage for
  2891.              examples of such things.
  2892.  
  2893.      pop ARRAY
  2894.  
  2895.      pop     Pops and returns the last value of the array, shortening the
  2896.              array by 1.  Has a similar effect to
  2897.  
  2898.  
  2899.  
  2900.  
  2901.                                                                        PPPPaaaaggggeeee 44444444
  2902.  
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  2909.  
  2910.  
  2911.  
  2912.                  $tmp = $ARRAY[$#ARRAY--];
  2913.  
  2914.              If there are no elements in the array, returns the undefined
  2915.              value.  If ARRAY is omitted, pops the @ARGV array in the main
  2916.              program, and the @_ array in subroutines, just like _s_h_i_f_t().
  2917.  
  2918.      pos SCALAR
  2919.  
  2920.      pos     Returns the offset of where the last m//g search left off for the
  2921.              variable is in question ($_ is used when the variable is not
  2922.              specified).  May be modified to change that offset.  Such
  2923.              modification will also influence the \G zero-width assertion in
  2924.              regular expressions.  See the _p_e_r_l_r_e manpage and the _p_e_r_l_o_p
  2925.              manpage.
  2926.  
  2927.      print FILEHANDLE LIST
  2928.  
  2929.      print LIST
  2930.  
  2931.      print   Prints a string or a comma-separated list of strings.  Returns
  2932.              TRUE if successful.  FILEHANDLE may be a scalar variable name, in
  2933.              which case the variable contains the name of or a reference to
  2934.              the filehandle, thus introducing one level of indirection.
  2935.              (NOTE: If FILEHANDLE is a variable and the next token is a term,
  2936.              it may be misinterpreted as an operator unless you interpose a +
  2937.              or put parentheses around the arguments.)  If FILEHANDLE is
  2938.              omitted, prints by default to standard output (or to the last
  2939.              selected output channel--see the select entry elsewhere in this
  2940.              document ).  If LIST is also omitted, prints $_ to STDOUT.  To
  2941.              set the default output channel to something other than STDOUT use
  2942.              the select operation.  Note that, because print takes a LIST,
  2943.              anything in the LIST is evaluated in a list context, and any
  2944.              subroutine that you call will have one or more of its expressions
  2945.              evaluated in a list context.  Also be careful not to follow the
  2946.              print keyword with a left parenthesis unless you want the
  2947.              corresponding right parenthesis to terminate the arguments to the
  2948.              print--interpose a + or put parentheses around all the arguments.
  2949.  
  2950.              Note that if you're storing FILEHANDLES in an array or other
  2951.              expression, you will have to use a block returning its value
  2952.              instead:
  2953.  
  2954.                  print { $files[$i] } "stuff\n";
  2955.                  print { $OK ? STDOUT : STDERR } "stuff\n";
  2956.  
  2957.  
  2958.      printf FILEHANDLE FORMAT, LIST
  2959.  
  2960.      printf FORMAT, LIST
  2961.              Equivalent to print FILEHANDLE sprintf(FORMAT, LIST).  The first
  2962.              argument of the list will be interpreted as the printf format.
  2963.              If use locale is in effect, the character used for the decimal
  2964.  
  2965.  
  2966.  
  2967.                                                                        PPPPaaaaggggeeee 44445555
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  2975.  
  2976.  
  2977.  
  2978.              point in formatted real numbers is affected by the LC_NUMERIC
  2979.              locale.  See the _p_e_r_l_l_o_c_a_l_e manpage.
  2980.  
  2981.              Don't fall into the trap of using a _p_r_i_n_t_f() when a simple
  2982.              _p_r_i_n_t() would do.  The _p_r_i_n_t() is more efficient, and less error
  2983.              prone.
  2984.  
  2985.      prototype FUNCTION
  2986.              Returns the prototype of a function as a string (or undef if the
  2987.              function has no prototype).  FUNCTION is a reference to, or the
  2988.              name of, the function whose prototype you want to retrieve.
  2989.  
  2990.      push ARRAY,LIST
  2991.              Treats ARRAY as a stack, and pushes the values of LIST onto the
  2992.              end of ARRAY.  The length of ARRAY increases by the length of
  2993.              LIST.  Has the same effect as
  2994.  
  2995.                  for $value (LIST) {
  2996.                      $ARRAY[++$#ARRAY] = $value;
  2997.                  }
  2998.  
  2999.              but is more efficient.  Returns the new number of elements in the
  3000.              array.
  3001.  
  3002.      q/STRING/
  3003.  
  3004.      qq/STRING/
  3005.  
  3006.      qx/STRING/
  3007.  
  3008.      qw/STRING/
  3009.              Generalized quotes.  See the _p_e_r_l_o_p manpage.
  3010.  
  3011.      quotemeta EXPR
  3012.  
  3013.      quotemeta
  3014.              Returns the value of EXPR with all non-alphanumeric characters
  3015.              backslashed.  (That is, all characters not matching /[A-Za-z_0-
  3016.              9]/ will be preceded by a backslash in the returned string,
  3017.              regardless of any locale settings.)  This is the internal
  3018.              function implementing the \Q escape in double-quoted strings.
  3019.  
  3020.              If EXPR is omitted, uses $_.
  3021.  
  3022.      rand EXPR
  3023.  
  3024.      rand    Returns a random fractional number greater than or equal to 0 and
  3025.              less than the value of EXPR.  (EXPR should be positive.)  If EXPR
  3026.              is omitted, the value 1 is used.  Automatically calls _s_r_a_n_d()
  3027.              unless _s_r_a_n_d() has already been called.  See also _s_r_a_n_d().
  3028.  
  3029.              (Note: If your rand function consistently returns numbers that
  3030.  
  3031.  
  3032.  
  3033.                                                                        PPPPaaaaggggeeee 44446666
  3034.  
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  3041.  
  3042.  
  3043.  
  3044.              are too large or too small, then your version of Perl was
  3045.              probably compiled with the wrong number of RANDBITS.)
  3046.  
  3047.      read FILEHANDLE,SCALAR,LENGTH,OFFSET
  3048.  
  3049.      read FILEHANDLE,SCALAR,LENGTH
  3050.              Attempts to read LENGTH bytes of data into variable SCALAR from
  3051.              the specified FILEHANDLE.  Returns the number of bytes actually
  3052.              read, or undef if there was an error.  SCALAR will be grown or
  3053.              shrunk to the length actually read.  An OFFSET may be specified
  3054.              to place the read data at some other place than the beginning of
  3055.              the string.  This call is actually implemented in terms of
  3056.              stdio's fread call.  To get a true read system call, see
  3057.              _s_y_s_r_e_a_d().
  3058.  
  3059.      readdir DIRHANDLE
  3060.              Returns the next directory entry for a directory opened by
  3061.              _o_p_e_n_d_i_r().  If used in a list context, returns all the rest of
  3062.              the entries in the directory.  If there are no more entries,
  3063.              returns an undefined value in a scalar context or a null list in
  3064.              a list context.
  3065.  
  3066.              If you're planning to filetest the return values out of a
  3067.              _r_e_a_d_d_i_r(), you'd better prepend the directory in question.
  3068.              Otherwise, because we didn't _c_h_d_i_r() there, it would have been
  3069.              testing the wrong file.
  3070.  
  3071.                  opendir(DIR, $some_dir) || die "can't opendir $some_dir: $!";
  3072.                  @dots = grep { /^\./ && -f "$some_dir/$_" } readdir(DIR);
  3073.                  closedir DIR;
  3074.  
  3075.  
  3076.      readline EXPR
  3077.              Reads from the file handle EXPR.  In scalar context, a single
  3078.              line is read and returned.  In list context, reads until end-of-
  3079.              file is reached and returns a list of lines (however you've
  3080.              defined lines with $/ or $INPUT_RECORD_SEPARATOR).  This is the
  3081.              internal function implementing the <EXPR> operator, but you can
  3082.              use it directly.  The <EXPR> operator is discussed in more detail
  3083.              in the section on _I/_O _O_p_e_r_a_t_o_r_s in the _p_e_r_l_o_p manpage.
  3084.  
  3085.      readlink EXPR
  3086.  
  3087.      readlink
  3088.              Returns the value of a symbolic link, if symbolic links are
  3089.              implemented.  If not, gives a fatal error.  If there is some
  3090.              system error, returns the undefined value and sets $! (errno).
  3091.              If EXPR is omitted, uses $_.
  3092.  
  3093.      readpipe EXPR
  3094.              EXPR is interpolated and then executed as a system command.  The
  3095.              collected standard output of the command is returned.  In scalar
  3096.  
  3097.  
  3098.  
  3099.                                                                        PPPPaaaaggggeeee 44447777
  3100.  
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  3107.  
  3108.  
  3109.  
  3110.              context, it comes back as a single (potentially multi-line)
  3111.              string.  In list context, returns a list of lines (however you've
  3112.              defined lines with $/ or $INPUT_RECORD_SEPARATOR).  This is the
  3113.              internal function implementing the qx/EXPR/ operator, but you can
  3114.              use it directly.  The qx/EXPR/ operator is discussed in more
  3115.              detail in the section on _I/_O _O_p_e_r_a_t_o_r_s in the _p_e_r_l_o_p manpage.
  3116.  
  3117.      recv SOCKET,SCALAR,LEN,FLAGS
  3118.              Receives a message on a socket.  Attempts to receive LENGTH bytes
  3119.              of data into variable SCALAR from the specified SOCKET
  3120.              filehandle.  Actually does a C _r_e_c_v_f_r_o_m(), so that it can returns
  3121.              the address of the sender.  Returns the undefined value if
  3122.              there's an error.  SCALAR will be grown or shrunk to the length
  3123.              actually read.  Takes the same flags as the system call of the
  3124.              same name.  See the section on _U_D_P: _M_e_s_s_a_g_e _P_a_s_s_i_n_g in the
  3125.              _p_e_r_l_i_p_c manpage for examples.
  3126.  
  3127.      redo LABEL
  3128.  
  3129.      redo    The redo command restarts the loop block without evaluating the
  3130.              conditional again.  The continue block, if any, is not executed.
  3131.              If the LABEL is omitted, the command refers to the innermost
  3132.              enclosing loop.  This command is normally used by programs that
  3133.              want to lie to themselves about what was just input:
  3134.  
  3135.                  # a simpleminded Pascal comment stripper
  3136.                  # (warning: assumes no { or } in strings)
  3137.                  LINE: while (<STDIN>) {
  3138.                      while (s|({.*}.*){.*}|$1 |) {}
  3139.                      s|{.*}| |;
  3140.                      if (s|{.*| |) {
  3141.                          $front = $_;
  3142.                          while (<STDIN>) {
  3143.                              if (/}/) {      # end of comment?
  3144.                                  s|^|$front{|;
  3145.                                  redo LINE;
  3146.                              }
  3147.                          }
  3148.                      }
  3149.                      print;
  3150.                  }
  3151.  
  3152.  
  3153.      ref EXPR
  3154.  
  3155.      ref     Returns a TRUE value if EXPR is a reference, FALSE otherwise.  If
  3156.              EXPR is not specified, $_ will be used.  The value returned
  3157.              depends on the type of thing the reference is a reference to.
  3158.              Builtin types include:
  3159.  
  3160.  
  3161.  
  3162.  
  3163.  
  3164.  
  3165.                                                                        PPPPaaaaggggeeee 44448888
  3166.  
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  3173.  
  3174.  
  3175.  
  3176.                  REF
  3177.                  SCALAR
  3178.                  ARRAY
  3179.                  HASH
  3180.                  CODE
  3181.                  GLOB
  3182.  
  3183.              If the referenced object has been blessed into a package, then
  3184.              that package name is returned instead.  You can think of _r_e_f() as
  3185.              a _t_y_p_e_o_f() operator.
  3186.  
  3187.                  if (ref($r) eq "HASH") {
  3188.                      print "r is a reference to a hash.\n";
  3189.                  }
  3190.                  if (!ref ($r) {
  3191.                      print "r is not a reference at all.\n";
  3192.                  }
  3193.  
  3194.              See also the _p_e_r_l_r_e_f manpage.
  3195.  
  3196.      rename OLDNAME,NEWNAME
  3197.              Changes the name of a file.  Returns 1 for success, 0 otherwise.
  3198.              Will not work across file system boundaries.
  3199.  
  3200.      require EXPR
  3201.  
  3202.      require Demands some semantics specified by EXPR, or by $_ if EXPR is not
  3203.              supplied.  If EXPR is numeric, demands that the current version
  3204.              of Perl ($] or $PERL_VERSION) be equal or greater than EXPR.
  3205.  
  3206.              Otherwise, demands that a library file be included if it hasn't
  3207.              already been included.  The file is included via the do-FILE
  3208.              mechanism, which is essentially just a variety of _e_v_a_l().  Has
  3209.              semantics similar to the following subroutine:
  3210.  
  3211.  
  3212.  
  3213.  
  3214.  
  3215.  
  3216.  
  3217.  
  3218.  
  3219.  
  3220.  
  3221.  
  3222.  
  3223.  
  3224.  
  3225.  
  3226.  
  3227.  
  3228.  
  3229.  
  3230.  
  3231.                                                                        PPPPaaaaggggeeee 44449999
  3232.  
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  3239.  
  3240.  
  3241.  
  3242.                  sub require {
  3243.                      local($filename) = @_;
  3244.                      return 1 if $INC{$filename};
  3245.                      local($realfilename,$result);
  3246.                      ITER: {
  3247.                          foreach $prefix (@INC) {
  3248.                              $realfilename = "$prefix/$filename";
  3249.                              if (-f $realfilename) {
  3250.                                  $result = do $realfilename;
  3251.                                  last ITER;
  3252.                              }
  3253.                          }
  3254.                          die "Can't find $filename in \@INC";
  3255.                      }
  3256.                      die $@ if $@;
  3257.                      die "$filename did not return true value" unless $result;
  3258.                      $INC{$filename} = $realfilename;
  3259.                      $result;
  3260.                  }
  3261.  
  3262.              Note that the file will not be included twice under the same
  3263.              specified name.  The file must return TRUE as the last statement
  3264.              to indicate successful execution of any initialization code, so
  3265.              it's customary to end such a file with "1;" unless you're sure
  3266.              it'll return TRUE otherwise.  But it's better just to put the
  3267.              "1;", in case you add more statements.
  3268.  
  3269.              If EXPR is a bareword, the require assumes a "._p_m" extension and
  3270.              replaces "::" with "/" in the filename for you, to make it easy
  3271.              to load standard modules.  This form of loading of modules does
  3272.              not risk altering your namespace.
  3273.  
  3274.              For a yet-more-powerful import facility, see the use entry
  3275.              elsewhere in this document and the _p_e_r_l_m_o_d manpage.
  3276.  
  3277.      reset EXPR
  3278.  
  3279.      reset   Generally used in a continue block at the end of a loop to clear
  3280.              variables and reset ?? searches so that they work again.  The
  3281.              expression is interpreted as a list of single characters (hyphens
  3282.              allowed for ranges).  All variables and arrays beginning with one
  3283.              of those letters are reset to their pristine state.  If the
  3284.              expression is omitted, one-match searches (?pattern?) are reset
  3285.              to match again.  Resets only variables or searches in the current
  3286.              package.  Always returns 1.  Examples:
  3287.  
  3288.                  reset 'X';          # reset all X variables
  3289.                  reset 'a-z';        # reset lower case variables
  3290.                  reset;              # just reset ?? searches
  3291.  
  3292.              Resetting "A-Z" is not recommended because you'll wipe out your
  3293.              ARGV and ENV arrays.  Resets only package variables--lexical
  3294.  
  3295.  
  3296.  
  3297.                                                                        PPPPaaaaggggeeee 55550000
  3298.  
  3299.  
  3300.  
  3301.  
  3302.  
  3303.  
  3304. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  3305.  
  3306.  
  3307.  
  3308.              variables are unaffected, but they clean themselves up on scope
  3309.              exit anyway, so you'll probably want to use them instead.  See
  3310.              the my entry elsewhere in this document .
  3311.  
  3312.      return EXPR
  3313.  
  3314.      return  Returns from a subroutine, _e_v_a_l(), or do FILE with the value of
  3315.              the given EXPR.  Evaluation of EXPR may be in a list, scalar, or
  3316.              void context, depending on how the return value will be used, and
  3317.              the context may vary from one execution to the next (see
  3318.              _w_a_n_t_a_r_r_a_y()).  If no EXPR is given, returns an empty list in a
  3319.              list context, an undefined value in a scalar context, or nothing
  3320.              in a void context.
  3321.  
  3322.              (Note that in the absence of a return, a subroutine, eval, or do
  3323.              FILE will automatically return the value of the last expression
  3324.              evaluated.)
  3325.  
  3326.      reverse LIST
  3327.              In a list context, returns a list value consisting of the
  3328.              elements of LIST in the opposite order.  In a scalar context,
  3329.              concatenates the elements of LIST, and returns a string value
  3330.              consisting of those bytes, but in the opposite order.
  3331.  
  3332.                  print reverse <>;           # line tac, last line first
  3333.  
  3334.                  undef $/;                   # for efficiency of <>
  3335.                  print scalar reverse <>;    # byte tac, last line tsrif
  3336.  
  3337.              This operator is also handy for inverting a hash, although there
  3338.              are some caveats.  If a value is duplicated in the original hash,
  3339.              only one of those can be represented as a key in the inverted
  3340.              hash.  Also, this has to unwind one hash and build a whole new
  3341.              one, which may take some time on a large hash.
  3342.  
  3343.                  %by_name = reverse %by_address;     # Invert the hash
  3344.  
  3345.  
  3346.      rewinddir DIRHANDLE
  3347.              Sets the current position to the beginning of the directory for
  3348.              the _r_e_a_d_d_i_r() routine on DIRHANDLE.
  3349.  
  3350.      rindex STR,SUBSTR,POSITION
  3351.  
  3352.      rindex STR,SUBSTR
  3353.              Works just like index except that it returns the position of the
  3354.              LAST occurrence of SUBSTR in STR.  If POSITION is specified,
  3355.              returns the last occurrence at or before that position.
  3356.  
  3357.      rmdir FILENAME
  3358.  
  3359.  
  3360.  
  3361.  
  3362.  
  3363.                                                                        PPPPaaaaggggeeee 55551111
  3364.  
  3365.  
  3366.  
  3367.  
  3368.  
  3369.  
  3370. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  3371.  
  3372.  
  3373.  
  3374.      rmdir   Deletes the directory specified by FILENAME if it is empty.  If
  3375.              it succeeds it returns 1, otherwise it returns 0 and sets $!
  3376.              (errno).  If FILENAME is omitted, uses $_.
  3377.  
  3378.      s///    The substitution operator.  See the _p_e_r_l_o_p manpage.
  3379.  
  3380.      scalar EXPR
  3381.              Forces EXPR to be interpreted in a scalar context and returns the
  3382.              value of EXPR.
  3383.  
  3384.                  @counts = ( scalar @a, scalar @b, scalar @c );
  3385.  
  3386.              There is no equivalent operator to force an expression to be
  3387.              interpolated in a list context because it's in practice never
  3388.              needed.  If you really wanted to do so, however, you could use
  3389.              the construction @{[ (some expression) ]}, but usually a simple
  3390.              (some expression) suffices.
  3391.  
  3392.      seek FILEHANDLE,POSITION,WHENCE
  3393.              Sets FILEHANDLE's position, just like the _f_s_e_e_k() call of stdio.
  3394.              FILEHANDLE may be an expression whose value gives the name of the
  3395.              filehandle.  The values for WHENCE are 0 to set the new position
  3396.              to POSITION, 1 to set it to the current position plus POSITION,
  3397.              and 2 to set it to EOF plus POSITION (typically negative).  For
  3398.              WHENCE you may use the constants SEEK_SET, SEEK_CUR, and SEEK_END
  3399.              from either the IO::Seekable or the POSIX module.  Returns 1 upon
  3400.              success, 0 otherwise.
  3401.  
  3402.              If you want to position file for _s_y_s_r_e_a_d() or _s_y_s_w_r_i_t_e(), don't
  3403.              use _s_e_e_k() -- buffering makes its effect on the file's system
  3404.              position unpredictable and non-portable.  Use _s_y_s_s_e_e_k() instead.
  3405.  
  3406.              On some systems you have to do a seek whenever you switch between
  3407.              reading and writing.  Amongst other things, this may have the
  3408.              effect of calling stdio's _c_l_e_a_r_e_r_r(3).  A WHENCE of 1 (SEEK_CUR)
  3409.              is useful for not moving the file position:
  3410.  
  3411.                  seek(TEST,0,1);
  3412.  
  3413.              This is also useful for applications emulating tail -f.  Once you
  3414.              hit EOF on your read, and then sleep for a while, you might have
  3415.              to stick in a _s_e_e_k() to reset things.  The _s_e_e_k() doesn't change
  3416.              the current position, but it _d_o_e_s clear the end-of-file condition
  3417.              on the handle, so that the next <FILE> makes Perl try again to
  3418.              read something.  We hope.
  3419.  
  3420.              If that doesn't work (some stdios are particularly cantankerous),
  3421.              then you may need something more like this:
  3422.  
  3423.  
  3424.  
  3425.  
  3426.  
  3427.  
  3428.  
  3429.                                                                        PPPPaaaaggggeeee 55552222
  3430.  
  3431.  
  3432.  
  3433.  
  3434.  
  3435.  
  3436. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  3437.  
  3438.  
  3439.  
  3440.                  for (;;) {
  3441.                      for ($curpos = tell(FILE); $_ = <FILE>; $curpos = tell(FILE)) {
  3442.                          # search for some stuff and put it into files
  3443.                      }
  3444.                      sleep($for_a_while);
  3445.                      seek(FILE, $curpos, 0);
  3446.                  }
  3447.  
  3448.  
  3449.      seekdir DIRHANDLE,POS
  3450.              Sets the current position for the _r_e_a_d_d_i_r() routine on DIRHANDLE.
  3451.              POS must be a value returned by _t_e_l_l_d_i_r().  Has the same caveats
  3452.              about possible directory compaction as the corresponding system
  3453.              library routine.
  3454.  
  3455.      select FILEHANDLE
  3456.  
  3457.      select  Returns the currently selected filehandle.  Sets the current
  3458.              default filehandle for output, if FILEHANDLE is supplied.  This
  3459.              has two effects: first, a write or a print without a filehandle
  3460.              will default to this FILEHANDLE.  Second, references to variables
  3461.              related to output will refer to this output channel.  For
  3462.              example, if you have to set the top of form format for more than
  3463.              one output channel, you might do the following:
  3464.  
  3465.                  select(REPORT1);
  3466.                  $^ = 'report1_top';
  3467.                  select(REPORT2);
  3468.                  $^ = 'report2_top';
  3469.  
  3470.              FILEHANDLE may be an expression whose value gives the name of the
  3471.              actual filehandle.  Thus:
  3472.  
  3473.                  $oldfh = select(STDERR); $| = 1; select($oldfh);
  3474.  
  3475.              Some programmers may prefer to think of filehandles as objects
  3476.              with methods, preferring to write the last example as:
  3477.  
  3478.                  use IO::Handle;
  3479.                  STDERR->autoflush(1);
  3480.  
  3481.  
  3482.      select RBITS,WBITS,EBITS,TIMEOUT
  3483.              This calls the _s_e_l_e_c_t(2) system call with the bit masks
  3484.              specified, which can be constructed using _f_i_l_e_n_o() and _v_e_c(),
  3485.              along these lines:
  3486.  
  3487.                  $rin = $win = $ein = '';
  3488.                  vec($rin,fileno(STDIN),1) = 1;
  3489.                  vec($win,fileno(STDOUT),1) = 1;
  3490.                  $ein = $rin | $win;
  3491.  
  3492.  
  3493.  
  3494.  
  3495.                                                                        PPPPaaaaggggeeee 55553333
  3496.  
  3497.  
  3498.  
  3499.  
  3500.  
  3501.  
  3502. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  3503.  
  3504.  
  3505.  
  3506.              If you want to select on many filehandles you might wish to write
  3507.              a subroutine:
  3508.  
  3509.                  sub fhbits {
  3510.                      local(@fhlist) = split(' ',$_[0]);
  3511.                      local($bits);
  3512.                      for (@fhlist) {
  3513.                          vec($bits,fileno($_),1) = 1;
  3514.                      }
  3515.                      $bits;
  3516.                  }
  3517.                  $rin = fhbits('STDIN TTY SOCK');
  3518.  
  3519.              The usual idiom is:
  3520.  
  3521.                  ($nfound,$timeleft) =
  3522.                    select($rout=$rin, $wout=$win, $eout=$ein, $timeout);
  3523.  
  3524.              or to block until something becomes ready just do this
  3525.  
  3526.                  $nfound = select($rout=$rin, $wout=$win, $eout=$ein, undef);
  3527.  
  3528.              Most systems do not bother to return anything useful in
  3529.              $timeleft, so calling _s_e_l_e_c_t() in a scalar context just returns
  3530.              $nfound.
  3531.  
  3532.              Any of the bit masks can also be undef.  The timeout, if
  3533.              specified, is in seconds, which may be fractional.  Note: not all
  3534.              implementations are capable of returning the $timeleft.  If not,
  3535.              they always return $timeleft equal to the supplied $timeout.
  3536.  
  3537.              You can effect a sleep of 250 milliseconds this way:
  3538.  
  3539.                  select(undef, undef, undef, 0.25);
  3540.  
  3541.              WWWWAAAARRRRNNNNIIIINNNNGGGG: Do not attempt to mix buffered I/O (like _r_e_a_d() or <FH>)
  3542.              with _s_e_l_e_c_t().  You have to use _s_y_s_r_e_a_d() instead.
  3543.  
  3544.      semctl ID,SEMNUM,CMD,ARG
  3545.              Calls the System V IPC function semctl.  If CMD is &IPC_STAT or
  3546.              &GETALL, then ARG must be a variable which will hold the returned
  3547.              semid_ds structure or semaphore value array.  Returns like ioctl:
  3548.              the undefined value for error, "0 but true" for zero, or the
  3549.              actual return value otherwise.
  3550.  
  3551.      semget KEY,NSEMS,FLAGS
  3552.              Calls the System V IPC function semget.  Returns the semaphore
  3553.              id, or the undefined value if there is an error.
  3554.  
  3555.      semop KEY,OPSTRING
  3556.              Calls the System V IPC function semop to perform semaphore
  3557.              operations such as signaling and waiting.  OPSTRING must be a
  3558.  
  3559.  
  3560.  
  3561.                                                                        PPPPaaaaggggeeee 55554444
  3562.  
  3563.  
  3564.  
  3565.  
  3566.  
  3567.  
  3568. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  3569.  
  3570.  
  3571.  
  3572.              packed array of semop structures.  Each semop structure can be
  3573.              generated with pack("sss", $semnum, $semop, $semflag).  The
  3574.              number of semaphore operations is implied by the length of
  3575.              OPSTRING.  Returns TRUE if successful, or FALSE if there is an
  3576.              error.  As an example, the following code waits on semaphore
  3577.              $semnum of semaphore id $semid:
  3578.  
  3579.                  $semop = pack("sss", $semnum, -1, 0);
  3580.                  die "Semaphore trouble: $!\n" unless semop($semid, $semop);
  3581.  
  3582.              To signal the semaphore, replace "-1" with "1".
  3583.  
  3584.      send SOCKET,MSG,FLAGS,TO
  3585.  
  3586.      send SOCKET,MSG,FLAGS
  3587.              Sends a message on a socket.  Takes the same flags as the system
  3588.              call of the same name.  On unconnected sockets you must specify a
  3589.              destination to send TO, in which case it does a C _s_e_n_d_t_o().
  3590.              Returns the number of characters sent, or the undefined value if
  3591.              there is an error.  See the section on _U_D_P: _M_e_s_s_a_g_e _P_a_s_s_i_n_g in
  3592.              the _p_e_r_l_i_p_c manpage for examples.
  3593.  
  3594.      setpgrp PID,PGRP
  3595.              Sets the current process group for the specified PID, 0 for the
  3596.              current process.  Will produce a fatal error if used on a machine
  3597.              that doesn't implement _s_e_t_p_g_r_p(2).  If the arguments are omitted,
  3598.              it defaults to 0,0.  Note that the POSIX version of _s_e_t_p_g_r_p()
  3599.              does not accept any arguments, so only setpgrp 0,0 is portable.
  3600.  
  3601.      setpriority WHICH,WHO,PRIORITY
  3602.              Sets the current priority for a process, a process group, or a
  3603.              user.  (See _s_e_t_p_r_i_o_r_i_t_y(2).)  Will produce a fatal error if used
  3604.              on a machine that doesn't implement _s_e_t_p_r_i_o_r_i_t_y(2).
  3605.  
  3606.      setsockopt SOCKET,LEVEL,OPTNAME,OPTVAL
  3607.              Sets the socket option requested.  Returns undefined if there is
  3608.              an error.  OPTVAL may be specified as undef if you don't want to
  3609.              pass an argument.
  3610.  
  3611.      shift ARRAY
  3612.  
  3613.      shift   Shifts the first value of the array off and returns it,
  3614.              shortening the array by 1 and moving everything down.  If there
  3615.              are no elements in the array, returns the undefined value.  If
  3616.              ARRAY is omitted, shifts the @ARGV array in the main program, and
  3617.              the @_ array in subroutines.  (This is determined lexically.)
  3618.              See also _u_n_s_h_i_f_t(), _p_u_s_h(), and _p_o_p().  _S_h_i_f_t() and _u_n_s_h_i_f_t() do
  3619.              the same thing to the left end of an array that _p_o_p() and _p_u_s_h()
  3620.              do to the right end.
  3621.  
  3622.  
  3623.  
  3624.  
  3625.  
  3626.  
  3627.                                                                        PPPPaaaaggggeeee 55555555
  3628.  
  3629.  
  3630.  
  3631.  
  3632.  
  3633.  
  3634. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  3635.  
  3636.  
  3637.  
  3638.      shmctl ID,CMD,ARG
  3639.              Calls the System V IPC function shmctl.  If CMD is &IPC_STAT,
  3640.              then ARG must be a variable which will hold the returned shmid_ds
  3641.              structure.  Returns like ioctl: the undefined value for error, "0
  3642.              but true" for zero, or the actual return value otherwise.
  3643.  
  3644.      shmget KEY,SIZE,FLAGS
  3645.              Calls the System V IPC function shmget.  Returns the shared
  3646.              memory segment id, or the undefined value if there is an error.
  3647.  
  3648.      shmread ID,VAR,POS,SIZE
  3649.  
  3650.      shmwrite ID,STRING,POS,SIZE
  3651.              Reads or writes the System V shared memory segment ID starting at
  3652.              position POS for size SIZE by attaching to it, copying in/out,
  3653.              and detaching from it.  When reading, VAR must be a variable
  3654.              which will hold the data read.  When writing, if STRING is too
  3655.              long, only SIZE bytes are used; if STRING is too short, nulls are
  3656.              written to fill out SIZE bytes.  Return TRUE if successful, or
  3657.              FALSE if there is an error.
  3658.  
  3659.      shutdown SOCKET,HOW
  3660.              Shuts down a socket connection in the manner indicated by HOW,
  3661.              which has the same interpretation as in the system call of the
  3662.              same name.
  3663.  
  3664.      sin EXPR
  3665.  
  3666.      sin     Returns the sine of EXPR (expressed in radians).  If EXPR is
  3667.              omitted, returns sine of $_.
  3668.  
  3669.              For the inverse sine operation, you may use the _P_O_S_I_X::_a_s_i_n()
  3670.              function, or use this relation:
  3671.  
  3672.                  sub asin { atan2($_[0], sqrt(1 - $_[0] * $_[0])) }
  3673.  
  3674.  
  3675.      sleep EXPR
  3676.  
  3677.      sleep   Causes the script to sleep for EXPR seconds, or forever if no
  3678.              EXPR.  May be interrupted by sending the process a SIGALRM.
  3679.              Returns the number of seconds actually slept.  You probably
  3680.              cannot mix _a_l_a_r_m() and _s_l_e_e_p() calls, because _s_l_e_e_p() is often
  3681.              implemented using _a_l_a_r_m().
  3682.  
  3683.              On some older systems, it may sleep up to a full second less than
  3684.              what you requested, depending on how it counts seconds.  Most
  3685.              modern systems always sleep the full amount.
  3686.  
  3687.              For delays of finer granularity than one second, you may use
  3688.              Perl's _s_y_s_c_a_l_l() interface to access _s_e_t_i_t_i_m_e_r(2) if your system
  3689.              supports it, or else see the select() entry elsewhere in this
  3690.  
  3691.  
  3692.  
  3693.                                                                        PPPPaaaaggggeeee 55556666
  3694.  
  3695.  
  3696.  
  3697.  
  3698.  
  3699.  
  3700. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  3701.  
  3702.  
  3703.  
  3704.              document below.
  3705.  
  3706.              See also the POSIX module's _s_i_g_p_a_u_s_e() function.
  3707.  
  3708.      socket SOCKET,DOMAIN,TYPE,PROTOCOL
  3709.              Opens a socket of the specified kind and attaches it to
  3710.              filehandle SOCKET.  DOMAIN, TYPE, and PROTOCOL are specified the
  3711.              same as for the system call of the same name.  You should "use
  3712.              Socket;" first to get the proper definitions imported.  See the
  3713.              example in the section on _S_o_c_k_e_t_s: _C_l_i_e_n_t/_S_e_r_v_e_r _C_o_m_m_u_n_i_c_a_t_i_o_n in
  3714.              the _p_e_r_l_i_p_c manpage.
  3715.  
  3716.      socketpair SOCKET1,SOCKET2,DOMAIN,TYPE,PROTOCOL
  3717.              Creates an unnamed pair of sockets in the specified domain, of
  3718.              the specified type.  DOMAIN, TYPE, and PROTOCOL are specified the
  3719.              same as for the system call of the same name.  If unimplemented,
  3720.              yields a fatal error.  Returns TRUE if successful.
  3721.  
  3722.      sort SUBNAME LIST
  3723.  
  3724.      sort BLOCK LIST
  3725.  
  3726.      sort LIST
  3727.              Sorts the LIST and returns the sorted list value.  If SUBNAME or
  3728.              BLOCK is omitted, sorts in standard string comparison order.  If
  3729.              SUBNAME is specified, it gives the name of a subroutine that
  3730.              returns an integer less than, equal to, or greater than 0,
  3731.              depending on how the elements of the array are to be ordered.
  3732.              (The <=> and cmp operators are extremely useful in such
  3733.              routines.)  SUBNAME may be a scalar variable name, in which case
  3734.              the value provides the name of the subroutine to use.  In place
  3735.              of a SUBNAME, you can provide a BLOCK as an anonymous, in-line
  3736.              sort subroutine.
  3737.  
  3738.              In the interests of efficiency the normal calling code for
  3739.              subroutines is bypassed, with the following effects: the
  3740.              subroutine may not be a recursive subroutine, and the two
  3741.              elements to be compared are passed into the subroutine not via @_
  3742.              but as the package global variables $a and $b (see example
  3743.              below).  They are passed by reference, so don't modify $a and $b.
  3744.              And don't try to declare them as lexicals either.
  3745.  
  3746.              You also cannot exit out of the sort block or subroutine using
  3747.              any of the loop control operators described in the _p_e_r_l_s_y_n
  3748.              manpage or with _g_o_t_o().
  3749.  
  3750.              When use locale is in effect, sort LIST sorts LIST according to
  3751.              the current collation locale.  See the _p_e_r_l_l_o_c_a_l_e manpage.
  3752.  
  3753.              Examples:
  3754.  
  3755.  
  3756.  
  3757.  
  3758.  
  3759.                                                                        PPPPaaaaggggeeee 55557777
  3760.  
  3761.  
  3762.  
  3763.  
  3764.  
  3765.  
  3766. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  3767.  
  3768.  
  3769.  
  3770.                  # sort lexically
  3771.                  @articles = sort @files;
  3772.  
  3773.                  # same thing, but with explicit sort routine
  3774.                  @articles = sort {$a cmp $b} @files;
  3775.  
  3776.                  # now case-insensitively
  3777.                  @articles = sort {uc($a) cmp uc($b)} @files;
  3778.  
  3779.                  # same thing in reversed order
  3780.                  @articles = sort {$b cmp $a} @files;
  3781.  
  3782.                  # sort numerically ascending
  3783.                  @articles = sort {$a <=> $b} @files;
  3784.  
  3785.                  # sort numerically descending
  3786.                  @articles = sort {$b <=> $a} @files;
  3787.  
  3788.                  # sort using explicit subroutine name
  3789.                  sub byage {
  3790.                      $age{$a} <=> $age{$b};  # presuming numeric
  3791.                  }
  3792.                  @sortedclass = sort byage @class;
  3793.  
  3794.                  # this sorts the %age hash by value instead of key
  3795.                  # using an in-line function
  3796.                  @eldest = sort { $age{$b} <=> $age{$a} } keys %age;
  3797.  
  3798.                  sub backwards { $b cmp $a; }
  3799.                  @harry = ('dog','cat','x','Cain','Abel');
  3800.                  @george = ('gone','chased','yz','Punished','Axed');
  3801.                  print sort @harry;
  3802.                          # prints AbelCaincatdogx
  3803.                  print sort backwards @harry;
  3804.                          # prints xdogcatCainAbel
  3805.                  print sort @george, 'to', @harry;
  3806.                          # prints AbelAxedCainPunishedcatchaseddoggonetoxyz
  3807.  
  3808.                  # inefficiently sort by descending numeric compare using
  3809.                  # the first integer after the first = sign, or the
  3810.                  # whole record case-insensitively otherwise
  3811.  
  3812.                  @new = sort {
  3813.                      ($b =~ /=(\d+)/)[0] <=> ($a =~ /=(\d+)/)[0]
  3814.                                          ||
  3815.                                  uc($a)  cmp  uc($b)
  3816.                  } @old;
  3817.  
  3818.  
  3819.  
  3820.  
  3821.  
  3822.  
  3823.  
  3824.  
  3825.                                                                        PPPPaaaaggggeeee 55558888
  3826.  
  3827.  
  3828.  
  3829.  
  3830.  
  3831.  
  3832. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  3833.  
  3834.  
  3835.  
  3836.                  # same thing, but much more efficiently;
  3837.                  # we'll build auxiliary indices instead
  3838.                  # for speed
  3839.                  @nums = @caps = ();
  3840.                  for (@old) {
  3841.                      push @nums, /=(\d+)/;
  3842.                      push @caps, uc($_);
  3843.                  }
  3844.  
  3845.                  @new = @old[ sort {
  3846.                                      $nums[$b] <=> $nums[$a]
  3847.                                               ||
  3848.                                      $caps[$a] cmp $caps[$b]
  3849.                                     } 0..$#old
  3850.                             ];
  3851.  
  3852.                  # same thing using a Schwartzian Transform (no temps)
  3853.                  @new = map { $_->[0] }
  3854.                      sort { $b->[1] <=> $a->[1]
  3855.                                      ||
  3856.                             $a->[2] cmp $b->[2]
  3857.                      } map { [$_, /=(\d+)/, uc($_)] } @old;
  3858.  
  3859.              If you're using strict, you _M_U_S_T _N_O_T declare $a and $b as
  3860.              lexicals.  They are package globals.  That means if you're in the
  3861.              main package, it's
  3862.  
  3863.                  @articles = sort {$main::b <=> $main::a} @files;
  3864.  
  3865.              or just
  3866.  
  3867.                  @articles = sort {$::b <=> $::a} @files;
  3868.  
  3869.              but if you're in the FooPack package, it's
  3870.  
  3871.                  @articles = sort {$FooPack::b <=> $FooPack::a} @files;
  3872.  
  3873.              The comparison function is required to behave.  If it returns
  3874.              inconsistent results (sometimes saying $x[1] is less than $x[2]
  3875.              and sometimes saying the opposite, for example) the Perl
  3876.              interpreter will probably crash and dump core.  This is entirely
  3877.              due to and dependent upon your system's _q_s_o_r_t(3) library routine;
  3878.              this routine often avoids sanity checks in the interest of speed.
  3879.  
  3880.      splice ARRAY,OFFSET,LENGTH,LIST
  3881.  
  3882.      splice ARRAY,OFFSET,LENGTH
  3883.  
  3884.      splice ARRAY,OFFSET
  3885.              Removes the elements designated by OFFSET and LENGTH from an
  3886.              array, and replaces them with the elements of LIST, if any.
  3887.              Returns the elements removed from the array.  The array grows or
  3888.  
  3889.  
  3890.  
  3891.                                                                        PPPPaaaaggggeeee 55559999
  3892.  
  3893.  
  3894.  
  3895.  
  3896.  
  3897.  
  3898. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  3899.  
  3900.  
  3901.  
  3902.              shrinks as necessary.  If LENGTH is omitted, removes everything
  3903.              from OFFSET onward.  The following equivalences hold (assuming $[
  3904.              == 0):
  3905.  
  3906.                  push(@a,$x,$y)      splice(@a,$#a+1,0,$x,$y)
  3907.                  pop(@a)             splice(@a,-1)
  3908.                  shift(@a)           splice(@a,0,1)
  3909.                  unshift(@a,$x,$y)   splice(@a,0,0,$x,$y)
  3910.                  $a[$x] = $y         splice(@a,$x,1,$y);
  3911.  
  3912.              Example, assuming array lengths are passed before arrays:
  3913.  
  3914.                  sub aeq {   # compare two list values
  3915.                      local(@a) = splice(@_,0,shift);
  3916.                      local(@b) = splice(@_,0,shift);
  3917.                      return 0 unless @a == @b;       # same len?
  3918.                      while (@a) {
  3919.                          return 0 if pop(@a) ne pop(@b);
  3920.                      }
  3921.                      return 1;
  3922.                  }
  3923.                  if (&aeq($len,@foo[1..$len],0+@bar,@bar)) { ... }
  3924.  
  3925.  
  3926.      split /PATTERN/,EXPR,LIMIT
  3927.  
  3928.      split /PATTERN/,EXPR
  3929.  
  3930.      split /PATTERN/
  3931.  
  3932.      split   Splits a string into an array of strings, and returns it.
  3933.  
  3934.              If not in a list context, returns the number of fields found and
  3935.              splits into the @_ array.  (In a list context, you can force the
  3936.              split into @_ by using ?? as the pattern delimiters, but it still
  3937.              returns the array value.)  The use of implicit split to @_ is
  3938.              deprecated, however.
  3939.  
  3940.              If EXPR is omitted, splits the $_ string.  If PATTERN is also
  3941.              omitted, splits on whitespace (after skipping any leading
  3942.              whitespace).  Anything matching PATTERN is taken to be a
  3943.              delimiter separating the fields.  (Note that the delimiter may be
  3944.              longer than one character.)
  3945.  
  3946.              If LIMIT is specified and is not negative, splits into no more
  3947.              than that many fields (though it may split into fewer).  If LIMIT
  3948.              is unspecified, trailing null fields are stripped (which
  3949.              potential users of _p_o_p() would do well to remember).  If LIMIT is
  3950.              negative, it is treated as if an arbitrarily large LIMIT had been
  3951.              specified.
  3952.  
  3953.              A pattern matching the null string (not to be confused with a
  3954.  
  3955.  
  3956.  
  3957.                                                                        PPPPaaaaggggeeee 66660000
  3958.  
  3959.  
  3960.  
  3961.  
  3962.  
  3963.  
  3964. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  3965.  
  3966.  
  3967.  
  3968.              null pattern //, which is just one member of the set of patterns
  3969.              matching a null string) will split the value of EXPR into
  3970.              separate characters at each point it matches that way.  For
  3971.              example:
  3972.  
  3973.                  print join(':', split(/ */, 'hi there'));
  3974.  
  3975.              produces the output 'h:i:t:h:e:r:e'.
  3976.  
  3977.              The LIMIT parameter can be used to split a line partially
  3978.  
  3979.                  ($login, $passwd, $remainder) = split(/:/, $_, 3);
  3980.  
  3981.              When assigning to a list, if LIMIT is omitted, Perl supplies a
  3982.              LIMIT one larger than the number of variables in the list, to
  3983.              avoid unnecessary work.  For the list above LIMIT would have been
  3984.              4 by default.  In time critical applications it behooves you not
  3985.              to split into more fields than you really need.
  3986.  
  3987.              If the PATTERN contains parentheses, additional array elements
  3988.              are created from each matching substring in the delimiter.
  3989.  
  3990.                  split(/([,-])/, "1-10,20", 3);
  3991.  
  3992.              produces the list value
  3993.  
  3994.                  (1, '-', 10, ',', 20)
  3995.  
  3996.              If you had the entire header of a normal Unix email message in
  3997.              $header, you could split it up into fields and their values this
  3998.              way:
  3999.  
  4000.                  $header =~ s/\n\s+/ /g;  # fix continuation lines
  4001.                  %hdrs   =  (UNIX_FROM => split /^(\S*?):\s*/m, $header);
  4002.  
  4003.              The pattern /PATTERN/ may be replaced with an expression to
  4004.              specify patterns that vary at runtime.  (To do runtime
  4005.              compilation only once, use /$variable/o.)
  4006.  
  4007.              As a special case, specifying a PATTERN of space (' ') will split
  4008.              on white space just as split with no arguments does.  Thus,
  4009.              _s_p_l_i_t(' ') can be used to emulate aaaawwwwkkkk's default behavior, whereas
  4010.              split(/ /) will give you as many null initial fields as there are
  4011.              leading spaces.  A split on /\s+/ is like a _s_p_l_i_t(' ') except
  4012.              that any leading whitespace produces a null first field.  A split
  4013.              with no arguments really does a split(' ', $_) internally.
  4014.  
  4015.              Example:
  4016.  
  4017.  
  4018.  
  4019.  
  4020.  
  4021.  
  4022.  
  4023.                                                                        PPPPaaaaggggeeee 66661111
  4024.  
  4025.  
  4026.  
  4027.  
  4028.  
  4029.  
  4030. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  4031.  
  4032.  
  4033.  
  4034.                  open(passwd, '/etc/passwd');
  4035.                  while (<passwd>) {
  4036.                      ($login, $passwd, $uid, $gid, $gcos,
  4037.                          $home, $shell) = split(/:/);
  4038.                      ...
  4039.                  }
  4040.  
  4041.              (Note that $shell above will still have a newline on it.  See the
  4042.              chop, chomp,  and join entries elsewhere in this document .)
  4043.  
  4044.      sprintf FORMAT, LIST
  4045.              Returns a string formatted by the usual printf conventions of the
  4046.              C library function _s_p_r_i_n_t_f().  See the _s_p_r_i_n_t_f(_3) manpage or the
  4047.              _p_r_i_n_t_f(_3) manpage on your system for an explanation of the
  4048.              general principles.
  4049.  
  4050.              Perl does all of its own _s_p_r_i_n_t_f() formatting -- it emulates the
  4051.              C function _s_p_r_i_n_t_f(), but it doesn't use it (except for
  4052.              floating-point numbers, and even then only the standard modifiers
  4053.              are allowed).  As a result, any non-standard extensions in your
  4054.              local _s_p_r_i_n_t_f() are not available from Perl.
  4055.  
  4056.              Perl's _s_p_r_i_n_t_f() permits the following universally-known
  4057.              conversions:
  4058.  
  4059.                 %%   a percent sign
  4060.                 %c   a character with the given number
  4061.                 %s   a string
  4062.                 %d   a signed integer, in decimal
  4063.                 %u   an unsigned integer, in decimal
  4064.                 %o   an unsigned integer, in octal
  4065.                 %x   an unsigned integer, in hexadecimal
  4066.                 %e   a floating-point number, in scientific notation
  4067.                 %f   a floating-point number, in fixed decimal notation
  4068.                 %g   a floating-point number, in %e or %f notation
  4069.  
  4070.              In addition, Perl permits the following widely-supported
  4071.              conversions:
  4072.  
  4073.                 %X   like %x, but using upper-case letters
  4074.                 %E   like %e, but using an upper-case "E"
  4075.                 %G   like %g, but with an upper-case "E" (if applicable)
  4076.                 %p   a pointer (outputs the Perl value's address in hexadecimal)
  4077.                 %n   special: *stores* the number of characters output so far
  4078.                      into the next variable in the parameter list
  4079.  
  4080.              Finally, for backward (and we do mean "backward") compatibility,
  4081.              Perl permits these unnecessary but widely-supported conversions:
  4082.  
  4083.  
  4084.  
  4085.  
  4086.  
  4087.  
  4088.  
  4089.                                                                        PPPPaaaaggggeeee 66662222
  4090.  
  4091.  
  4092.  
  4093.  
  4094.  
  4095.  
  4096. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  4097.  
  4098.  
  4099.  
  4100.                 %i   a synonym for %d
  4101.                 %D   a synonym for %ld
  4102.                 %U   a synonym for %lu
  4103.                 %O   a synonym for %lo
  4104.                 %F   a synonym for %f
  4105.  
  4106.              Perl permits the following universally-known flags between the %
  4107.              and the conversion letter:
  4108.  
  4109.                 space   prefix positive number with a space
  4110.                 +       prefix positive number with a plus sign
  4111.                 -       left-justify within the field
  4112.                 0       use zeros, not spaces, to right-justify
  4113.                 #       prefix octal with "0", hex with "0x"
  4114.                 number  minimum field width
  4115.                 .number "precision": digits after decimal point for floating-point,
  4116.                         max length for string, minimum length for integer
  4117.                 l       interpret integer as C type "long" or "unsigned long"
  4118.                 h       interpret integer as C type "short" or "unsigned short"
  4119.  
  4120.              There is also one Perl-specific flag:
  4121.  
  4122.                 V       interpret integer as Perl's standard integer type
  4123.  
  4124.              Where a number would appear in the flags, an asterisk ("*") may
  4125.              be used instead, in which case Perl uses the next item in the
  4126.              parameter list as the given number (that is, as the field width
  4127.              or precision).  If a field width obtained through "*" is
  4128.              negative, it has the same effect as the '-' flag: left-
  4129.              justification.
  4130.  
  4131.              If use locale is in effect, the character used for the decimal
  4132.              point in formatted real numbers is affected by the LC_NUMERIC
  4133.              locale.  See the _p_e_r_l_l_o_c_a_l_e manpage.
  4134.  
  4135.      sqrt EXPR
  4136.  
  4137.      sqrt    Return the square root of EXPR.  If EXPR is omitted, returns
  4138.              square root of $_.
  4139.  
  4140.      srand EXPR
  4141.  
  4142.      srand   Sets the random number seed for the rand operator.  If EXPR is
  4143.              omitted, uses a semi-random value based on the current time and
  4144.              process ID, among other things.  In versions of Perl prior to
  4145.              5.004 the default seed was just the current _t_i_m_e().  This isn't a
  4146.              particularly good seed, so many old programs supply their own
  4147.              seed value (often time ^ $$ or C<time ^ ($$ + ($$ << 15))>), but
  4148.              that isn't necessary any more.
  4149.  
  4150.              In fact, it's usually not necessary to call _s_r_a_n_d() at all,
  4151.              because if it is not called explicitly, it is called implicitly
  4152.  
  4153.  
  4154.  
  4155.                                                                        PPPPaaaaggggeeee 66663333
  4156.  
  4157.  
  4158.  
  4159.  
  4160.  
  4161.  
  4162. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  4163.  
  4164.  
  4165.  
  4166.              at the first use of the rand operator.  However, this was not the
  4167.              case in version of Perl before 5.004, so if your script will run
  4168.              under older Perl versions, it should call _s_r_a_n_d().
  4169.  
  4170.              Note that you need something much more random than the default
  4171.              seed for cryptographic purposes.  Checksumming the compressed
  4172.              output of one or more rapidly changing operating system status
  4173.              programs is the usual method.  For example:
  4174.  
  4175.                  srand (time ^ $$ ^ unpack "%L*", `ps axww | gzip`);
  4176.  
  4177.              If you're particularly concerned with this, see the
  4178.              Math::TrulyRandom module in CPAN.
  4179.  
  4180.              Do _n_o_t call _s_r_a_n_d() multiple times in your program unless you
  4181.              know exactly what you're doing and why you're doing it.  The
  4182.              point of the function is to "seed" the _r_a_n_d() function so that
  4183.              _r_a_n_d() can produce a different sequence each time you run your
  4184.              program.  Just do it once at the top of your program, or you
  4185.              _w_o_n'_t get random numbers out of _r_a_n_d()!
  4186.  
  4187.              Frequently called programs (like CGI scripts) that simply use
  4188.  
  4189.                  time ^ $$
  4190.  
  4191.              for a seed can fall prey to the mathematical property that
  4192.  
  4193.                  a^b == (a+1)^(b+1)
  4194.  
  4195.              one-third of the time.  So don't do that.
  4196.  
  4197.      stat FILEHANDLE
  4198.  
  4199.      stat EXPR
  4200.  
  4201.      stat    Returns a 13-element array giving the status info for a file,
  4202.              either the file opened via FILEHANDLE, or named by EXPR.  If EXPR
  4203.              is omitted, it stats $_.  Returns a null list if the stat fails.
  4204.              Typically used as follows:
  4205.  
  4206.                  ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
  4207.                     $atime,$mtime,$ctime,$blksize,$blocks)
  4208.                         = stat($filename);
  4209.  
  4210.              Not all fields are supported on all filesystem types.  Here are
  4211.              the meaning of the fields:
  4212.  
  4213.  
  4214.  
  4215.  
  4216.  
  4217.  
  4218.  
  4219.  
  4220.  
  4221.                                                                        PPPPaaaaggggeeee 66664444
  4222.  
  4223.  
  4224.  
  4225.  
  4226.  
  4227.  
  4228. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  4229.  
  4230.  
  4231.  
  4232.                0 dev      device number of filesystem
  4233.                1 ino      inode number
  4234.                2 mode     file mode  (type and permissions)
  4235.                3 nlink    number of (hard) links to the file
  4236.                4 uid      numeric user ID of file's owner
  4237.                5 gid      numeric group ID of file's owner
  4238.                6 rdev     the device identifier (special files only)
  4239.                7 size     total size of file, in bytes
  4240.                8 atime    last access time since the epoch
  4241.                9 mtime    last modify time since the epoch
  4242.               10 ctime    inode change time (NOT creation time!) since the epoch
  4243.               11 blksize  preferred block size for file system I/O
  4244.               12 blocks   actual number of blocks allocated
  4245.  
  4246.              (The epoch was at 00:00 January 1, 1970 GMT.)
  4247.  
  4248.              If stat is passed the special filehandle consisting of an
  4249.              underline, no stat is done, but the current contents of the stat
  4250.              structure from the last stat or filetest are returned.  Example:
  4251.  
  4252.                  if (-x $file && (($d) = stat(_)) && $d < 0) {
  4253.                      print "$file is executable NFS file\n";
  4254.                  }
  4255.  
  4256.              (This works on machines only for which the device number is
  4257.              negative under NFS.)
  4258.  
  4259.      study SCALAR
  4260.  
  4261.      study   Takes extra time to study SCALAR ($_ if unspecified) in
  4262.              anticipation of doing many pattern matches on the string before
  4263.              it is next modified.  This may or may not save time, depending on
  4264.              the nature and number of patterns you are searching on, and on
  4265.              the distribution of character frequencies in the string to be
  4266.              searched -- you probably want to compare run times with and
  4267.              without it to see which runs faster.  Those loops which scan for
  4268.              many short constant strings (including the constant parts of more
  4269.              complex patterns) will benefit most.  You may have only one study
  4270.              active at a time -- if you study a different scalar the first is
  4271.              "unstudied".  (The way study works is this: a linked list of
  4272.              every character in the string to be searched is made, so we know,
  4273.              for example, where all the 'k' characters are.  From each search
  4274.              string, the rarest character is selected, based on some static
  4275.              frequency tables constructed from some C programs and English
  4276.              text.  Only those places that contain this "rarest" character are
  4277.              examined.)
  4278.  
  4279.              For example, here is a loop which inserts index producing entries
  4280.              before any line containing a certain pattern:
  4281.  
  4282.  
  4283.  
  4284.  
  4285.  
  4286.  
  4287.                                                                        PPPPaaaaggggeeee 66665555
  4288.  
  4289.  
  4290.  
  4291.  
  4292.  
  4293.  
  4294. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  4295.  
  4296.  
  4297.  
  4298.                  while (<>) {
  4299.                      study;
  4300.                      print ".IX foo\n" if /\bfoo\b/;
  4301.                      print ".IX bar\n" if /\bbar\b/;
  4302.                      print ".IX blurfl\n" if /\bblurfl\b/;
  4303.                      ...
  4304.                      print;
  4305.                  }
  4306.  
  4307.              In searching for /\bfoo\b/, only those locations in $_ that
  4308.              contain "f" will be looked at, because "f" is rarer than "o".  In
  4309.              general, this is a big win except in pathological cases.  The
  4310.              only question is whether it saves you more time than it took to
  4311.              build the linked list in the first place.
  4312.  
  4313.              Note that if you have to look for strings that you don't know
  4314.              till runtime, you can build an entire loop as a string and eval
  4315.              that to avoid recompiling all your patterns all the time.
  4316.              Together with undefining $/ to input entire files as one record,
  4317.              this can be very fast, often faster than specialized programs
  4318.              like _f_g_r_e_p(1).  The following scans a list of files (@files) for
  4319.              a list of words (@words), and prints out the names of those files
  4320.              that contain a match:
  4321.  
  4322.                  $search = 'while (<>) { study;';
  4323.                  foreach $word (@words) {
  4324.                      $search .= "++\$seen{\$ARGV} if /\\b$word\\b/;\n";
  4325.                  }
  4326.                  $search .= "}";
  4327.                  @ARGV = @files;
  4328.                  undef $/;
  4329.                  eval $search;               # this screams
  4330.                  $/ = "\n";          # put back to normal input delimiter
  4331.                  foreach $file (sort keys(%seen)) {
  4332.                      print $file, "\n";
  4333.                  }
  4334.  
  4335.  
  4336.      sub BLOCK
  4337.  
  4338.      sub NAME
  4339.  
  4340.      sub NAME BLOCK
  4341.              This is subroutine definition, not a real function _p_e_r _s_e.  With
  4342.              just a NAME (and possibly prototypes), it's just a forward
  4343.              declaration.  Without a NAME, it's an anonymous function
  4344.              declaration, and does actually return a value: the CODE ref of
  4345.              the closure you just created.  See the _p_e_r_l_s_u_b manpage and the
  4346.              _p_e_r_l_r_e_f manpage for details.
  4347.  
  4348.  
  4349.  
  4350.  
  4351.  
  4352.  
  4353.                                                                        PPPPaaaaggggeeee 66666666
  4354.  
  4355.  
  4356.  
  4357.  
  4358.  
  4359.  
  4360. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  4361.  
  4362.  
  4363.  
  4364.      substr EXPR,OFFSET,LEN
  4365.  
  4366.      substr EXPR,OFFSET
  4367.              Extracts a substring out of EXPR and returns it.  First character
  4368.              is at offset 0, or whatever you've set $[ to (but don't do that).
  4369.              If OFFSET is negative (or more precisely, less than $[), starts
  4370.              that far from the end of the string.  If LEN is omitted, returns
  4371.              everything to the end of the string.  If LEN is negative, leaves
  4372.              that many characters off the end of the string.
  4373.  
  4374.              If you specify a substring which is partly outside the string,
  4375.              the part within the string is returned.    If the substring is
  4376.              totally outside the string a warning is produced.
  4377.  
  4378.              You can use the _s_u_b_s_t_r() function as an lvalue, in which case
  4379.              EXPR must be an lvalue.  If you assign something shorter than
  4380.              LEN, the string will shrink, and if you assign something longer
  4381.              than LEN, the string will grow to accommodate it.  To keep the
  4382.              string the same length you may need to pad or chop your value
  4383.              using _s_p_r_i_n_t_f().
  4384.  
  4385.      symlink OLDFILE,NEWFILE
  4386.              Creates a new filename symbolically linked to the old filename.
  4387.              Returns 1 for success, 0 otherwise.  On systems that don't
  4388.              support symbolic links, produces a fatal error at run time.  To
  4389.              check for that, use eval:
  4390.  
  4391.                  $symlink_exists = (eval {symlink("","")};, $@ eq '');
  4392.  
  4393.  
  4394.      syscall LIST
  4395.              Calls the system call specified as the first element of the list,
  4396.              passing the remaining elements as arguments to the system call.
  4397.              If unimplemented, produces a fatal error.  The arguments are
  4398.              interpreted as follows: if a given argument is numeric, the
  4399.              argument is passed as an int.  If not, the pointer to the string
  4400.              value is passed.  You are responsible to make sure a string is
  4401.              pre-extended long enough to receive any result that might be
  4402.              written into a string.  If your integer arguments are not
  4403.              literals and have never been interpreted in a numeric context,
  4404.              you may need to add 0 to them to force them to look like numbers.
  4405.  
  4406.                  require 'syscall.ph';               # may need to run h2ph
  4407.                  syscall(&SYS_write, fileno(STDOUT), "hi there\n", 9);
  4408.  
  4409.              Note that Perl supports passing of up to only 14 arguments to
  4410.              your system call, which in practice should usually suffice.
  4411.  
  4412.              Syscall returns whatever value returned by the system call it
  4413.              calls.  If the system call fails, syscall returns -1 and sets $!
  4414.              (errno).  Note that some system calls can legitimately return -1.
  4415.              The proper way to handle such calls is to assign $!=0; before the
  4416.  
  4417.  
  4418.  
  4419.                                                                        PPPPaaaaggggeeee 66667777
  4420.  
  4421.  
  4422.  
  4423.  
  4424.  
  4425.  
  4426. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  4427.  
  4428.  
  4429.  
  4430.              call and check the value of <$!> if syscall returns -1.
  4431.  
  4432.              There's a problem with syscall(&SYS_pipe): it returns the file
  4433.              number of the read end of the pipe it creates.  There is no way
  4434.              to retrieve the file number of the other end.  You can avoid this
  4435.              problem by using pipe instead.
  4436.  
  4437.      sysopen FILEHANDLE,FILENAME,MODE
  4438.  
  4439.      sysopen FILEHANDLE,FILENAME,MODE,PERMS
  4440.              Opens the file whose filename is given by FILENAME, and
  4441.              associates it with FILEHANDLE.  If FILEHANDLE is an expression,
  4442.              its value is used as the name of the real filehandle wanted.
  4443.              This function calls the underlying operating system's open
  4444.              function with the parameters FILENAME, MODE, PERMS.
  4445.  
  4446.              The possible values and flag bits of the MODE parameter are
  4447.              system-dependent; they are available via the standard module
  4448.              Fcntl.  However, for historical reasons, some values are
  4449.              universal: zero means read-only, one means write-only, and two
  4450.              means read/write.
  4451.  
  4452.              If the file named by FILENAME does not exist and the open call
  4453.              creates it (typically because MODE includes the O_CREAT flag),
  4454.              then the value of PERMS specifies the permissions of the newly
  4455.              created file.  If PERMS is omitted, the default value is 0666,
  4456.              which allows read and write for all.  This default is reasonable:
  4457.              see umask.
  4458.  
  4459.              The IO::File module provides a more object-oriented approach, if
  4460.              you're into that kind of thing.
  4461.  
  4462.      sysread FILEHANDLE,SCALAR,LENGTH,OFFSET
  4463.  
  4464.      sysread FILEHANDLE,SCALAR,LENGTH
  4465.              Attempts to read LENGTH bytes of data into variable SCALAR from
  4466.              the specified FILEHANDLE, using the system call _r_e_a_d(2).  It
  4467.              bypasses stdio, so mixing this with other kinds of reads,
  4468.              _p_r_i_n_t(), _w_r_i_t_e(), _s_e_e_k(), or _t_e_l_l() can cause confusion because
  4469.              stdio usually buffers data.  Returns the number of bytes actually
  4470.              read, or undef if there was an error.  SCALAR will be grown or
  4471.              shrunk so that the last byte actually read is the last byte of
  4472.              the scalar after the read.
  4473.  
  4474.              An OFFSET may be specified to place the read data at some place
  4475.              in the string other than the beginning.  A negative OFFSET
  4476.              specifies placement at that many bytes counting backwards from
  4477.              the end of the string.  A positive OFFSET greater than the length
  4478.              of SCALAR results in the string being padded to the required size
  4479.              with "\0" bytes before the result of the read is appended.
  4480.  
  4481.  
  4482.  
  4483.  
  4484.  
  4485.                                                                        PPPPaaaaggggeeee 66668888
  4486.  
  4487.  
  4488.  
  4489.  
  4490.  
  4491.  
  4492. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  4493.  
  4494.  
  4495.  
  4496.      sysseek FILEHANDLE,POSITION,WHENCE
  4497.              Sets FILEHANDLE's system position using the system call _l_s_e_e_k(2).
  4498.              It bypasses stdio, so mixing this with reads (other than
  4499.              _s_y_s_r_e_a_d()), _p_r_i_n_t(), _w_r_i_t_e(), _s_e_e_k(), or _t_e_l_l() may cause
  4500.              confusion.  FILEHANDLE may be an expression whose value gives the
  4501.              name of the filehandle.  The values for WHENCE are 0 to set the
  4502.              new position to POSITION, 1 to set the it to the current position
  4503.              plus POSITION, and 2 to set it to EOF plus POSITION (typically
  4504.              negative).  For WHENCE, you may use the constants SEEK_SET,
  4505.              SEEK_CUR, and SEEK_END from either the IO::Seekable or the POSIX
  4506.              module.
  4507.  
  4508.              Returns the new position, or the undefined value on failure.  A
  4509.              position of zero is returned as the string "0 but true"; thus
  4510.              _s_y_s_s_e_e_k() returns TRUE on success and FALSE on failure, yet you
  4511.              can still easily determine the new position.
  4512.  
  4513.      system LIST
  4514.              Does exactly the same thing as "exec LIST" except that a fork is
  4515.              done first, and the parent process waits for the child process to
  4516.              complete.  Note that argument processing varies depending on the
  4517.              number of arguments.  The return value is the exit status of the
  4518.              program as returned by the _w_a_i_t() call.  To get the actual exit
  4519.              value divide by 256.  See also the exec entry elsewhere in this
  4520.              document .  This is _N_O_T what you want to use to capture the
  4521.              output from a command, for that you should use merely backticks
  4522.              or qx//, as described in the section on `_S_T_R_I_N_G` in the _p_e_r_l_o_p
  4523.              manpage.
  4524.  
  4525.              Because _s_y_s_t_e_m() and backticks block SIGINT and SIGQUIT, killing
  4526.              the program they're running doesn't actually interrupt your
  4527.              program.
  4528.  
  4529.                  @args = ("command", "arg1", "arg2");
  4530.                  system(@args) == 0
  4531.                       or die "system @args failed: $?"
  4532.  
  4533.              Here's a more elaborate example of analysing the return value
  4534.              from _s_y_s_t_e_m() on a Unix system to check for all possibilities,
  4535.              including for signals and core dumps.
  4536.  
  4537.  
  4538.  
  4539.  
  4540.  
  4541.  
  4542.  
  4543.  
  4544.  
  4545.  
  4546.  
  4547.  
  4548.  
  4549.  
  4550.  
  4551.                                                                        PPPPaaaaggggeeee 66669999
  4552.  
  4553.  
  4554.  
  4555.  
  4556.  
  4557.  
  4558. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  4559.  
  4560.  
  4561.  
  4562.                  $rc = 0xffff & system @args;
  4563.                  printf "system(%s) returned %#04x: ", "@args", $rc;
  4564.                  if ($rc == 0) {
  4565.                      print "ran with normal exit\n";
  4566.                  }
  4567.                  elsif ($rc == 0xff00) {
  4568.                      print "command failed: $!\n";
  4569.                  }
  4570.                  elsif ($rc > 0x80) {
  4571.                      $rc >>= 8;
  4572.                      print "ran with non-zero exit status $rc\n";
  4573.                  }
  4574.                  else {
  4575.                      print "ran with ";
  4576.                      if ($rc &   0x80) {
  4577.                          $rc &= ~0x80;
  4578.                          print "core dump from ";
  4579.                      }
  4580.                      print "signal $rc\n"
  4581.                  }
  4582.                  $ok = ($rc != 0);
  4583.  
  4584.              When the arguments get executed via the system shell, results
  4585.              will be subject to its quirks and capabilities.  See the section
  4586.              on `_S_T_R_I_N_G` in the _p_e_r_l_o_p manpage for details.
  4587.  
  4588.      syswrite FILEHANDLE,SCALAR,LENGTH,OFFSET
  4589.  
  4590.      syswrite FILEHANDLE,SCALAR,LENGTH
  4591.              Attempts to write LENGTH bytes of data from variable SCALAR to
  4592.              the specified FILEHANDLE, using the system call _w_r_i_t_e(2).  It
  4593.              bypasses stdio, so mixing this with reads (other than _s_y_s_r_e_a_d()),
  4594.              _p_r_i_n_t(), _w_r_i_t_e(), _s_e_e_k(), or _t_e_l_l() may cause confusion because
  4595.              stdio usually buffers data.  Returns the number of bytes actually
  4596.              written, or undef if there was an error.  If the LENGTH is
  4597.              greater than the available data in the SCALAR after the OFFSET,
  4598.              only as much data as is available will be written.
  4599.  
  4600.              An OFFSET may be specified to write the data from some part of
  4601.              the string other than the beginning.  A negative OFFSET specifies
  4602.              writing that many bytes counting backwards from the end of the
  4603.              string.  In the case the SCALAR is empty you can use OFFSET but
  4604.              only zero offset.
  4605.  
  4606.      tell FILEHANDLE
  4607.  
  4608.      tell    Returns the current position for FILEHANDLE.  FILEHANDLE may be
  4609.              an expression whose value gives the name of the actual
  4610.              filehandle.  If FILEHANDLE is omitted, assumes the file last
  4611.              read.
  4612.  
  4613.  
  4614.  
  4615.  
  4616.  
  4617.                                                                        PPPPaaaaggggeeee 77770000
  4618.  
  4619.  
  4620.  
  4621.  
  4622.  
  4623.  
  4624. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  4625.  
  4626.  
  4627.  
  4628.      telldir DIRHANDLE
  4629.              Returns the current position of the _r_e_a_d_d_i_r() routines on
  4630.              DIRHANDLE.  Value may be given to _s_e_e_k_d_i_r() to access a
  4631.              particular location in a directory.  Has the same caveats about
  4632.              possible directory compaction as the corresponding system library
  4633.              routine.
  4634.  
  4635.      tie VARIABLE,CLASSNAME,LIST
  4636.              This function binds a variable to a package class that will
  4637.              provide the implementation for the variable.  VARIABLE is the
  4638.              name of the variable to be enchanted.  CLASSNAME is the name of a
  4639.              class implementing objects of correct type.  Any additional
  4640.              arguments are passed to the "new" method of the class (meaning
  4641.              TIESCALAR, TIEARRAY, or TIEHASH).  Typically these are arguments
  4642.              such as might be passed to the _d_b_m__o_p_e_n() function of C.  The
  4643.              object returned by the "new" method is also returned by the _t_i_e()
  4644.              function, which would be useful if you want to access other
  4645.              methods in CLASSNAME.
  4646.  
  4647.              Note that functions such as _k_e_y_s() and _v_a_l_u_e_s() may return huge
  4648.              array values when used on large objects, like DBM files.  You may
  4649.              prefer to use the _e_a_c_h() function to iterate over such.  Example:
  4650.  
  4651.                  # print out history file offsets
  4652.                  use NDBM_File;
  4653.                  tie(%HIST, 'NDBM_File', '/usr/lib/news/history', 1, 0);
  4654.                  while (($key,$val) = each %HIST) {
  4655.                      print $key, ' = ', unpack('L',$val), "\n";
  4656.                  }
  4657.                  untie(%HIST);
  4658.  
  4659.              A class implementing a hash should have the following methods:
  4660.  
  4661.                  TIEHASH classname, LIST
  4662.                  DESTROY this
  4663.                  FETCH this, key
  4664.                  STORE this, key, value
  4665.                  DELETE this, key
  4666.                  EXISTS this, key
  4667.                  FIRSTKEY this
  4668.                  NEXTKEY this, lastkey
  4669.  
  4670.              A class implementing an ordinary array should have the following
  4671.              methods:
  4672.  
  4673.                  TIEARRAY classname, LIST
  4674.                  DESTROY this
  4675.                  FETCH this, key
  4676.                  STORE this, key, value
  4677.                  [others TBD]
  4678.  
  4679.              A class implementing a scalar should have the following methods:
  4680.  
  4681.  
  4682.  
  4683.                                                                        PPPPaaaaggggeeee 77771111
  4684.  
  4685.  
  4686.  
  4687.  
  4688.  
  4689.  
  4690. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  4691.  
  4692.  
  4693.  
  4694.                  TIESCALAR classname, LIST
  4695.                  DESTROY this
  4696.                  FETCH this,
  4697.                  STORE this, value
  4698.  
  4699.              Unlike _d_b_m_o_p_e_n(), the _t_i_e() function will not use or require a
  4700.              module for you--you need to do that explicitly yourself.  See the
  4701.              _D_B__F_i_l_e manpage or the _C_o_n_f_i_g module for interesting _t_i_e()
  4702.              implementations.
  4703.  
  4704.      tied VARIABLE
  4705.              Returns a reference to the object underlying VARIABLE (the same
  4706.              value that was originally returned by the _t_i_e() call which bound
  4707.              the variable to a package.)  Returns the undefined value if
  4708.              VARIABLE isn't tied to a package.
  4709.  
  4710.      time    Returns the number of non-leap seconds since whatever time the
  4711.              system considers to be the epoch (that's 00:00:00, January 1,
  4712.              1904 for MacOS, and 00:00:00 UTC, January 1, 1970 for most other
  4713.              systems).  Suitable for feeding to _g_m_t_i_m_e() and _l_o_c_a_l_t_i_m_e().
  4714.  
  4715.      times   Returns a four-element array giving the user and system times, in
  4716.              seconds, for this process and the children of this process.
  4717.  
  4718.                  ($user,$system,$cuser,$csystem) = times;
  4719.  
  4720.  
  4721.      tr///   The translation operator.  Same as y///. See the _p_e_r_l_o_p manpage.
  4722.  
  4723.      truncate FILEHANDLE,LENGTH
  4724.  
  4725.      truncate EXPR,LENGTH
  4726.              Truncates the file opened on FILEHANDLE, or named by EXPR, to the
  4727.              specified length.  Produces a fatal error if truncate isn't
  4728.              implemented on your system.
  4729.  
  4730.      uc EXPR
  4731.  
  4732.      uc      Returns an uppercased version of EXPR.  This is the internal
  4733.              function implementing the \U escape in double-quoted strings.
  4734.              Respects current LC_CTYPE locale if use locale in force.  See the
  4735.              _p_e_r_l_l_o_c_a_l_e manpage.
  4736.  
  4737.              If EXPR is omitted, uses $_.
  4738.  
  4739.      ucfirst EXPR
  4740.  
  4741.      ucfirst Returns the value of EXPR with the first character uppercased.
  4742.              This is the internal function implementing the \u escape in
  4743.              double-quoted strings.  Respects current LC_CTYPE locale if use
  4744.              locale in force.  See the _p_e_r_l_l_o_c_a_l_e manpage.
  4745.  
  4746.  
  4747.  
  4748.  
  4749.                                                                        PPPPaaaaggggeeee 77772222
  4750.  
  4751.  
  4752.  
  4753.  
  4754.  
  4755.  
  4756. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  4757.  
  4758.  
  4759.  
  4760.              If EXPR is omitted, uses $_.
  4761.  
  4762.      umask EXPR
  4763.  
  4764.      umask   Sets the umask for the process to EXPR and returns the previous
  4765.              value.  If EXPR is omitted, merely returns the current umask.
  4766.              Remember that a umask is a number, usually given in octal; it is
  4767.              _n_o_t a string of octal digits.  See also the oct entry elsewhere
  4768.              in this document if all you have is a string.
  4769.  
  4770.      undef EXPR
  4771.  
  4772.      undef   Undefines the value of EXPR, which must be an lvalue.  Use only
  4773.              on a scalar value, an entire array, an entire hash, or a
  4774.              subroutine name (using "&").  (Using _u_n_d_e_f() will probably not do
  4775.              what you expect on most predefined variables or DBM list values,
  4776.              so don't do that.)  Always returns the undefined value.  You can
  4777.              omit the EXPR, in which case nothing is undefined, but you still
  4778.              get an undefined value that you could, for instance, return from
  4779.              a subroutine, assign to a variable or pass as a parameter.
  4780.              Examples:
  4781.  
  4782.                  undef $foo;
  4783.                  undef $bar{'blurfl'};             # Compare to: delete $bar{'blurfl'};
  4784.                  undef @ary;
  4785.                  undef %hash;
  4786.                  undef &mysub;
  4787.                  return (wantarray ? (undef, $errmsg) : undef) if $they_blew_it;
  4788.                  select undef, undef, undef, 0.25;
  4789.                  ($a, $b, undef, $c) = &foo;       # Ignore third value returned
  4790.  
  4791.  
  4792.      unlink LIST
  4793.  
  4794.      unlink  Deletes a list of files.  Returns the number of files
  4795.              successfully deleted.
  4796.  
  4797.                  $cnt = unlink 'a', 'b', 'c';
  4798.                  unlink @goners;
  4799.                  unlink <*.bak>;
  4800.  
  4801.              Note: unlink will not delete directories unless you are superuser
  4802.              and the ----UUUU flag is supplied to Perl.  Even if these conditions
  4803.              are met, be warned that unlinking a directory can inflict damage
  4804.              on your filesystem.  Use rmdir instead.
  4805.  
  4806.              If LIST is omitted, uses $_.
  4807.  
  4808.      unpack TEMPLATE,EXPR
  4809.              Unpack does the reverse of pack: it takes a string representing a
  4810.              structure and expands it out into a list value, returning the
  4811.              array value.  (In a scalar context, it returns merely the first
  4812.  
  4813.  
  4814.  
  4815.                                                                        PPPPaaaaggggeeee 77773333
  4816.  
  4817.  
  4818.  
  4819.  
  4820.  
  4821.  
  4822. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  4823.  
  4824.  
  4825.  
  4826.              value produced.)  The TEMPLATE has the same format as in the pack
  4827.              function.  Here's a subroutine that does substring:
  4828.  
  4829.                  sub substr {
  4830.                      local($what,$where,$howmuch) = @_;
  4831.                      unpack("x$where a$howmuch", $what);
  4832.                  }
  4833.  
  4834.              and then there's
  4835.  
  4836.                  sub ordinal { unpack("c",$_[0]); } # same as ord()
  4837.  
  4838.              In addition, you may prefix a field with a %<number> to indicate
  4839.              that you want a <number>-bit checksum of the items instead of the
  4840.              items themselves.  Default is a 16-bit checksum.  For example,
  4841.              the following computes the same number as the System V sum
  4842.              program:
  4843.  
  4844.                  while (<>) {
  4845.                      $checksum += unpack("%16C*", $_);
  4846.                  }
  4847.                  $checksum %= 65536;
  4848.  
  4849.              The following efficiently counts the number of set bits in a bit
  4850.              vector:
  4851.  
  4852.                  $setbits = unpack("%32b*", $selectmask);
  4853.  
  4854.  
  4855.      untie VARIABLE
  4856.              Breaks the binding between a variable and a package.  (See
  4857.              _t_i_e().)
  4858.  
  4859.      unshift ARRAY,LIST
  4860.              Does the opposite of a shift.  Or the opposite of a push,
  4861.              depending on how you look at it.  Prepends list to the front of
  4862.              the array, and returns the new number of elements in the array.
  4863.  
  4864.                  unshift(ARGV, '-e') unless $ARGV[0] =~ /^-/;
  4865.  
  4866.              Note the LIST is prepended whole, not one element at a time, so
  4867.              the prepended elements stay in the same order.  Use reverse to do
  4868.              the reverse.
  4869.  
  4870.      use Module LIST
  4871.  
  4872.      use Module
  4873.  
  4874.      use Module VERSION LIST
  4875.  
  4876.  
  4877.  
  4878.  
  4879.  
  4880.  
  4881.                                                                        PPPPaaaaggggeeee 77774444
  4882.  
  4883.  
  4884.  
  4885.  
  4886.  
  4887.  
  4888. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  4889.  
  4890.  
  4891.  
  4892.      use VERSION
  4893.              Imports some semantics into the current package from the named
  4894.              module, generally by aliasing certain subroutine or variable
  4895.              names into your package.  It is exactly equivalent to
  4896.  
  4897.                  BEGIN { require Module; import Module LIST; }
  4898.  
  4899.              except that Module _m_u_s_t be a bareword.
  4900.  
  4901.              If the first argument to use is a number, it is treated as a
  4902.              version number instead of a module name.  If the version of the
  4903.              Perl interpreter is less than VERSION, then an error message is
  4904.              printed and Perl exits immediately.  This is often useful if you
  4905.              need to check the current Perl version before useing library
  4906.              modules which have changed in incompatible ways from older
  4907.              versions of Perl.  (We try not to do this more than we have to.)
  4908.  
  4909.              The BEGIN forces the require and import to happen at compile
  4910.              time.  The require makes sure the module is loaded into memory if
  4911.              it hasn't been yet.  The import is not a builtin--it's just an
  4912.              ordinary static method call into the "Module" package to tell the
  4913.              module to import the list of features back into the current
  4914.              package.  The module can implement its import method any way it
  4915.              likes, though most modules just choose to derive their import
  4916.              method via inheritance from the Exporter class that is defined in
  4917.              the Exporter module.  See the _E_x_p_o_r_t_e_r manpage.  If no import
  4918.              method can be found then the error is currently silently ignored.
  4919.              This may change to a fatal error in a future version.
  4920.  
  4921.              If you don't want your namespace altered, explicitly supply an
  4922.              empty list:
  4923.  
  4924.                  use Module ();
  4925.  
  4926.              That is exactly equivalent to
  4927.  
  4928.                  BEGIN { require Module; }
  4929.  
  4930.              If the VERSION argument is present between Module and LIST, then
  4931.              the use will call the VERSION method in class Module with the
  4932.              given version as an argument.  The default VERSION method,
  4933.              inherited from the Universal class, croaks if the given version
  4934.              is larger than the value of the variable $Module::VERSION.  (Note
  4935.              that there is not a comma after VERSION!)
  4936.  
  4937.              Because this is a wide-open interface, pragmas (compiler
  4938.              directives) are also implemented this way.  Currently implemented
  4939.              pragmas are:
  4940.  
  4941.  
  4942.  
  4943.  
  4944.  
  4945.  
  4946.  
  4947.                                                                        PPPPaaaaggggeeee 77775555
  4948.  
  4949.  
  4950.  
  4951.  
  4952.  
  4953.  
  4954. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  4955.  
  4956.  
  4957.  
  4958.                  use integer;
  4959.                  use diagnostics;
  4960.                  use sigtrap qw(SEGV BUS);
  4961.                  use strict  qw(subs vars refs);
  4962.                  use subs    qw(afunc blurfl);
  4963.  
  4964.              These pseudo-modules import semantics into the current block
  4965.              scope, unlike ordinary modules, which import symbols into the
  4966.              current package (which are effective through the end of the
  4967.              file).
  4968.  
  4969.              There's a corresponding "no" command that unimports meanings
  4970.              imported by use, i.e., it calls unimport Module LIST instead of
  4971.              import.
  4972.  
  4973.                  no integer;
  4974.                  no strict 'refs';
  4975.  
  4976.              If no unimport method can be found the call fails with a fatal
  4977.              error.
  4978.  
  4979.              See the _p_e_r_l_m_o_d manpage for a list of standard modules and
  4980.              pragmas.
  4981.  
  4982.      utime LIST
  4983.              Changes the access and modification times on each file of a list
  4984.              of files.  The first two elements of the list must be the
  4985.              NUMERICAL access and modification times, in that order.  Returns
  4986.              the number of files successfully changed.  The inode modification
  4987.              time of each file is set to the current time.  Example of a
  4988.              "touch" command:
  4989.  
  4990.                  #!/usr/bin/perl
  4991.                  $now = time;
  4992.                  utime $now, $now, @ARGV;
  4993.  
  4994.  
  4995.      values HASH
  4996.              Returns a normal array consisting of all the values of the named
  4997.              hash.  (In a scalar context, returns the number of values.)  The
  4998.              values are returned in an apparently random order, but it is the
  4999.              same order as either the _k_e_y_s() or _e_a_c_h() function would produce
  5000.              on the same hash.  As a side effect, it resets HASH's iterator.
  5001.              See also _k_e_y_s(), _e_a_c_h(), and _s_o_r_t().
  5002.  
  5003.      vec EXPR,OFFSET,BITS
  5004.              Treats the string in EXPR as a vector of unsigned integers, and
  5005.              returns the value of the bit field specified by OFFSET.  BITS
  5006.              specifies the number of bits that are reserved for each entry in
  5007.              the bit vector.  This must be a power of two from 1 to 32. _v_e_c()
  5008.              may also be assigned to, in which case parentheses are needed to
  5009.              give the expression the correct precedence as in
  5010.  
  5011.  
  5012.  
  5013.                                                                        PPPPaaaaggggeeee 77776666
  5014.  
  5015.  
  5016.  
  5017.  
  5018.  
  5019.  
  5020. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  5021.  
  5022.  
  5023.  
  5024.                  vec($image, $max_x * $x + $y, 8) = 3;
  5025.  
  5026.              Vectors created with _v_e_c() can also be manipulated with the
  5027.              logical operators |, &, and ^, which will assume a bit vector
  5028.              operation is desired when both operands are strings.
  5029.  
  5030.              To transform a bit vector into a string or array of 0's and 1's,
  5031.              use these:
  5032.  
  5033.                  $bits = unpack("b*", $vector);
  5034.                  @bits = split(//, unpack("b*", $vector));
  5035.  
  5036.              If you know the exact length in bits, it can be used in place of
  5037.              the *.
  5038.  
  5039.      wait    Waits for a child process to terminate and returns the pid of the
  5040.              deceased process, or -1 if there are no child processes.  The
  5041.              status is returned in $?.
  5042.  
  5043.      waitpid PID,FLAGS
  5044.              Waits for a particular child process to terminate and returns the
  5045.              pid of the deceased process, or -1 if there is no such child
  5046.              process.  The status is returned in $?.  If you say
  5047.  
  5048.                  use POSIX ":sys_wait_h";
  5049.                  ...
  5050.                  waitpid(-1,&WNOHANG);
  5051.  
  5052.              then you can do a non-blocking wait for any process.  Non-
  5053.              blocking wait is available on machines supporting either the
  5054.              _w_a_i_t_p_i_d(2) or _w_a_i_t_4(2) system calls.  However, waiting for a
  5055.              particular pid with FLAGS of 0 is implemented everywhere.  (Perl
  5056.              emulates the system call by remembering the status values of
  5057.              processes that have exited but have not been harvested by the
  5058.              Perl script yet.)
  5059.  
  5060.      wantarray
  5061.              Returns TRUE if the context of the currently executing subroutine
  5062.              is looking for a list value.  Returns FALSE if the context is
  5063.              looking for a scalar.  Returns the undefined value if the context
  5064.              is looking for no value (void context).
  5065.  
  5066.                  return unless defined wantarray;    # don't bother doing more
  5067.                  my @a = complex_calculation();
  5068.                  return wantarray ? @a : "@a";
  5069.  
  5070.  
  5071.      warn LIST
  5072.              Produces a message on STDERR just like _d_i_e(), but doesn't exit or
  5073.              throw an exception.
  5074.  
  5075.              No message is printed if there is a $SIG{__WARN__} handler
  5076.  
  5077.  
  5078.  
  5079.                                                                        PPPPaaaaggggeeee 77777777
  5080.  
  5081.  
  5082.  
  5083.  
  5084.  
  5085.  
  5086. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  5087.  
  5088.  
  5089.  
  5090.              installed.  It is the handler's responsibility to deal with the
  5091.              message as it sees fit (like, for instance, converting it into a
  5092.              _d_i_e()).  Most handlers must therefore make arrangements to
  5093.              actually display the warnings that they are not prepared to deal
  5094.              with, by calling _w_a_r_n() again in the handler.  Note that this is
  5095.              quite safe and will not produce an endless loop, since __WARN__
  5096.              hooks are not called from inside one.
  5097.  
  5098.              You will find this behavior is slightly different from that of
  5099.              $SIG{__DIE__} handlers (which don't suppress the error text, but
  5100.              can instead call _d_i_e() again to change it).
  5101.  
  5102.              Using a __WARN__ handler provides a powerful way to silence all
  5103.              warnings (even the so-called mandatory ones).  An example:
  5104.  
  5105.                  # wipe out *all* compile-time warnings
  5106.                  BEGIN { $SIG{'__WARN__'} = sub { warn $_[0] if $DOWARN } }
  5107.                  my $foo = 10;
  5108.                  my $foo = 20;          # no warning about duplicate my $foo,
  5109.                                         # but hey, you asked for it!
  5110.                  # no compile-time or run-time warnings before here
  5111.                  $DOWARN = 1;
  5112.  
  5113.                  # run-time warnings enabled after here
  5114.                  warn "\$foo is alive and $foo!";     # does show up
  5115.  
  5116.              See the _p_e_r_l_v_a_r manpage for details on setting %SIG entries, and
  5117.              for more examples.
  5118.  
  5119.      write FILEHANDLE
  5120.  
  5121.      write EXPR
  5122.  
  5123.      write   Writes a formatted record (possibly multi-line) to the specified
  5124.              file, using the format associated with that file.  By default the
  5125.              format for a file is the one having the same name as the
  5126.              filehandle, but the format for the current output channel (see
  5127.              the _s_e_l_e_c_t() function) may be set explicitly by assigning the
  5128.              name of the format to the $~ variable.
  5129.  
  5130.              Top of form processing is handled automatically:  if there is
  5131.              insufficient room on the current page for the formatted record,
  5132.              the page is advanced by writing a form feed, a special top-of-
  5133.              page format is used to format the new page header, and then the
  5134.              record is written.  By default the top-of-page format is the name
  5135.              of the filehandle with "_TOP" appended, but it may be dynamically
  5136.              set to the format of your choice by assigning the name to the $^
  5137.              variable while the filehandle is selected.  The number of lines
  5138.              remaining on the current page is in variable $-, which can be set
  5139.              to 0 to force a new page.
  5140.  
  5141.              If FILEHANDLE is unspecified, output goes to the current default
  5142.  
  5143.  
  5144.  
  5145.                                                                        PPPPaaaaggggeeee 77778888
  5146.  
  5147.  
  5148.  
  5149.  
  5150.  
  5151.  
  5152. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  5153.  
  5154.  
  5155.  
  5156.              output channel, which starts out as STDOUT but may be changed by
  5157.              the select operator.  If the FILEHANDLE is an EXPR, then the
  5158.              expression is evaluated and the resulting string is used to look
  5159.              up the name of the FILEHANDLE at run time.  For more on formats,
  5160.              see the _p_e_r_l_f_o_r_m manpage.
  5161.  
  5162.              Note that write is _N_O_T the opposite of read.  Unfortunately.
  5163.  
  5164.      y///    The translation operator.  Same as tr///.  See the _p_e_r_l_o_p
  5165.              manpage.
  5166.  
  5167.  
  5168.  
  5169.  
  5170.  
  5171.  
  5172.  
  5173.  
  5174.  
  5175.  
  5176.  
  5177.  
  5178.  
  5179.  
  5180.  
  5181.  
  5182.  
  5183.  
  5184.  
  5185.  
  5186.  
  5187.  
  5188.  
  5189.  
  5190.  
  5191.  
  5192.  
  5193.  
  5194.  
  5195.  
  5196.  
  5197.  
  5198.  
  5199.  
  5200.  
  5201.  
  5202.  
  5203.  
  5204.  
  5205.  
  5206.  
  5207.  
  5208.  
  5209.  
  5210.  
  5211.                                                                        PPPPaaaaggggeeee 77779999
  5212.  
  5213.  
  5214.  
  5215.  
  5216.  
  5217.  
  5218. PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))                                                        PPPPEEEERRRRLLLLFFFFUUUUNNNNCCCC((((1111))))
  5219.  
  5220.  
  5221.  
  5222.  
  5223.  
  5224.  
  5225.  
  5226.  
  5227.  
  5228.  
  5229.  
  5230.  
  5231.  
  5232.  
  5233.  
  5234.  
  5235.  
  5236.  
  5237.  
  5238.  
  5239.  
  5240.  
  5241.  
  5242.  
  5243.  
  5244.  
  5245.  
  5246.  
  5247.  
  5248.  
  5249.  
  5250.  
  5251.  
  5252.  
  5253.  
  5254.  
  5255.  
  5256.  
  5257.  
  5258.  
  5259.  
  5260.  
  5261.  
  5262.  
  5263.  
  5264.  
  5265.  
  5266.  
  5267.  
  5268.  
  5269.  
  5270.  
  5271.  
  5272.  
  5273.  
  5274.                                                                        PPPPaaaaggggeeee 88880000
  5275.  
  5276.  
  5277.  
  5278.  
  5279.  
  5280.  
  5281.